summaryrefslogtreecommitdiffstats
path: root/lib/metadata/metadata.c
diff options
context:
space:
mode:
authorZdenek Kabelac <zkabelac@redhat.com>2011-11-04 22:49:53 +0000
committerZdenek Kabelac <zkabelac@redhat.com>2011-11-04 22:49:53 +0000
commit4079a8f29836ace50735202dff3796baeaa53537 (patch)
tree64164586b4e962f24cb19abca243d57c22beb00b /lib/metadata/metadata.c
parent7060c9d9421641dd0231edd245c0219185cbc420 (diff)
downloadlvm2-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.c8
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;
}