diff options
author | Peter Rajnoha <prajnoha@redhat.com> | 2014-11-12 10:03:27 +0100 |
---|---|---|
committer | Peter Rajnoha <prajnoha@redhat.com> | 2014-11-12 10:03:27 +0100 |
commit | ce8730b5080b85192af1aadea3d9e9b5333a2405 (patch) | |
tree | 23df385bf46e5a47d77656ddc337c0127c33b9a1 | |
parent | 60cc666c949ca16b1d7297eb2a3abc78dfbf3bf9 (diff) | |
download | lvm2-ce8730b5080b85192af1aadea3d9e9b5333a2405.tar.gz |
coverity: fix possible integer overflow
LVM2.2.02.112/lib/metadata/cache_manip.c:73: overflow_before_widen: Potentially overflowing expression "*pool_metadata_extents *vg->extent_size" with type "unsigned int" (32 bits, unsigned) is evaluated using 32-bit arithmetic, and then used in a context that expects an expression of type "uint64_t" (64 bits, unsigned).
LVM2.2.02.112/lib/activate/dev_manager.c:217: overflow_before_widen: Potentially overflowing expression "seg_status->seg->len * extent_size" with type "unsigned int" (32 bits, unsigned) is evaluated using 32-bit arithmetic, and then used in a context that expects an expression of type "uint64_t" (64 bits, unsigned).
LVM2.2.02.112/lib/activate/dev_manager.c:217: overflow_before_widen: Potentially overflowing expression "seg_status->seg->le * extent_size" with type "unsigned int" (32 bits, unsigned) is evaluated using 32-bit arithmetic, and then used in a context that expects an expression of type "uint64_t" (64 bits, unsigned).
-rw-r--r-- | lib/activate/dev_manager.c | 4 | ||||
-rw-r--r-- | lib/metadata/cache_manip.c | 2 |
2 files changed, 3 insertions, 3 deletions
diff --git a/lib/activate/dev_manager.c b/lib/activate/dev_manager.c index c62dcb80a..a17cd2563 100644 --- a/lib/activate/dev_manager.c +++ b/lib/activate/dev_manager.c @@ -217,8 +217,8 @@ static int _info_run(info_type_t type, const char *name, const char *dlid, do { target = dm_get_next_target(dmt, target, &target_start, &target_length, &target_name, &target_params); - if ((seg_status->seg->le * extent_size == target_start) && - (seg_status->seg->len * extent_size == target_length)) { + if (((uint64_t) seg_status->seg->le * extent_size == target_start) && + ((uint64_t) seg_status->seg->len * extent_size == target_length)) { params_to_process = target_params; break; } diff --git a/lib/metadata/cache_manip.c b/lib/metadata/cache_manip.c index d7813c361..27f381d14 100644 --- a/lib/metadata/cache_manip.c +++ b/lib/metadata/cache_manip.c @@ -70,7 +70,7 @@ int update_cache_pool_params(const struct segment_type *segtype, { uint64_t min_meta_size; uint32_t extent_size = vg->extent_size; - uint64_t pool_metadata_size = *pool_metadata_extents * vg->extent_size; + uint64_t pool_metadata_size = (uint64_t) *pool_metadata_extents * vg->extent_size; if (!(passed_args & PASS_ARG_CHUNK_SIZE)) *chunk_size = DEFAULT_CACHE_POOL_CHUNK_SIZE * 2; |