diff options
author | Milan Broz <mbroz@redhat.com> | 2011-09-15 15:26:40 +0000 |
---|---|---|
committer | Milan Broz <mbroz@redhat.com> | 2011-09-15 15:26:40 +0000 |
commit | b18e1fd50efb2d743907582d3aa665d0702b899e (patch) | |
tree | f9bf3ea75c54413e34adbaf56ebaac8c3720da88 /tools/lvresize.c | |
parent | 89880365fc1f66934c3f9d5f95addfceba623aae (diff) | |
download | lvm2-b18e1fd50efb2d743907582d3aa665d0702b899e.tar.gz lvm2-b18e1fd50efb2d743907582d3aa665d0702b899e.tar.xz lvm2-b18e1fd50efb2d743907582d3aa665d0702b899e.zip |
Fix possible overflow of size if %FREE or %VG is used.
https://bugzilla.redhat.com/show_bug.cgi?id=737087
Diffstat (limited to 'tools/lvresize.c')
-rw-r--r-- | tools/lvresize.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/tools/lvresize.c b/tools/lvresize.c index 7723fca2..4e4b1289 100644 --- a/tools/lvresize.c +++ b/tools/lvresize.c @@ -433,27 +433,27 @@ static int _lvresize(struct cmd_context *cmd, struct volume_group *vg, switch(lp->percent) { case PERCENT_VG: - lp->extents = lp->extents * vg->extent_count / 100; + lp->extents = percent_of_extents(lp->extents, vg->extent_count); break; case PERCENT_FREE: - lp->extents = lp->extents * vg->free_count / 100; + lp->extents = percent_of_extents(lp->extents, vg->free_count); break; case PERCENT_LV: - lp->extents = lp->extents * lv->le_count / 100; + lp->extents = percent_of_extents(lp->extents, lv->le_count); break; case PERCENT_PVS: if (lp->argc) { pv_extent_count = pv_list_extents_free(pvh); - lp->extents = lp->extents * pv_extent_count / 100; + lp->extents = percent_of_extents(lp->extents, pv_extent_count); } else - lp->extents = lp->extents * vg->extent_count / 100; + lp->extents = percent_of_extents(lp->extents, vg->extent_count); break; case PERCENT_ORIGIN: if (!lv_is_cow(lv)) { log_error("Specified LV does not have an origin LV."); return EINVALID_CMD_LINE; } - lp->extents = lp->extents * origin_from_cow(lv)->le_count / 100; + lp->extents = percent_of_extents(lp->extents, origin_from_cow(lv)->le_count); break; case PERCENT_NONE: break; |