diff options
author | Zdenek Kabelac <zkabelac@redhat.com> | 2011-11-04 22:49:53 +0000 |
---|---|---|
committer | Zdenek Kabelac <zkabelac@redhat.com> | 2011-11-04 22:49:53 +0000 |
commit | 4079a8f29836ace50735202dff3796baeaa53537 (patch) | |
tree | 64164586b4e962f24cb19abca243d57c22beb00b /lib/metadata/metadata.c | |
parent | 7060c9d9421641dd0231edd245c0219185cbc420 (diff) | |
download | lvm2-4079a8f29836ace50735202dff3796baeaa53537.tar.gz lvm2-4079a8f29836ace50735202dff3796baeaa53537.tar.xz lvm2-4079a8f29836ace50735202dff3796baeaa53537.zip |
Avoid lvextend to overflow
Add extra check to extent_count overflow.
Use internal define MAX_EXTENT_COUNT instead UINT32_MAX.
Diffstat (limited to 'lib/metadata/metadata.c')
-rw-r--r-- | lib/metadata/metadata.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/lib/metadata/metadata.c b/lib/metadata/metadata.c index 21ff001b..4037c0e6 100644 --- a/lib/metadata/metadata.c +++ b/lib/metadata/metadata.c @@ -276,12 +276,12 @@ int add_pv_to_vg(struct volume_group *vg, const char *pv_name, if (!alloc_pv_segment_whole_pv(mem, pv)) return_0; - if ((uint64_t) vg->extent_count + pv->pe_count > UINT32_MAX) { + if ((uint64_t) vg->extent_count + pv->pe_count > MAX_EXTENT_COUNT) { log_error("Unable to add %s to %s: new extent count (%" PRIu64 ") exceeds limit (%" PRIu32 ").", pv_name, vg->name, (uint64_t) vg->extent_count + pv->pe_count, - UINT32_MAX); + MAX_EXTENT_COUNT); return 0; } @@ -1000,12 +1000,12 @@ uint64_t extents_from_size(struct cmd_context *cmd, uint64_t size, display_size(cmd, size)); } - if (size > (uint64_t) UINT32_MAX * extent_size) { + if (size > (uint64_t) MAX_EXTENT_COUNT * extent_size) { log_error("Volume too large (%s) for extent size %s. " "Upper limit is %s.", display_size(cmd, size), display_size(cmd, (uint64_t) extent_size), - display_size(cmd, (uint64_t) UINT32_MAX * + display_size(cmd, (uint64_t) MAX_EXTENT_COUNT * extent_size)); return 0; } |