[lvm-devel] main - cov: ensure data is not derefenced
Zdenek Kabelac
zkabelac at sourceware.org
Mon Sep 20 13:30:07 UTC 2021
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=bfc6fe2bac8ac262075271c2f6649b28cd04f883
Commit: bfc6fe2bac8ac262075271c2f6649b28cd04f883
Parent: 3e7e9cc5e6abc4ddb1777e7c7b9d7bc42a7f57a7
Author: Zdenek Kabelac <zkabelac at redhat.com>
AuthorDate: Mon Sep 20 01:46:43 2021 +0200
Committer: Zdenek Kabelac <zkabelac at redhat.com>
CommitterDate: Mon Sep 20 14:26:09 2021 +0200
cov: ensure data is not derefenced
Ensure all hypothetical paths cannot dereference NULL *(u->data).
---
lib/device/bcache-utils.c | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/lib/device/bcache-utils.c b/lib/device/bcache-utils.c
index 85ec07aa6..82adb89a9 100644
--- a/lib/device/bcache-utils.c
+++ b/lib/device/bcache-utils.c
@@ -164,8 +164,10 @@ static bool _write_partial(struct updater *u, int di, block_address bb,
if (!bcache_get(u->cache, di, bb, GF_DIRTY, &b))
return false;
- memcpy(((unsigned char *) b->data) + offset, u->data, len);
- u->data = ((unsigned char *) u->data) + len;
+ if (u->data) {
+ memcpy(((unsigned char *) b->data) + offset, u->data, len);
+ u->data = ((unsigned char *) u->data) + len;
+ }
bcache_put(b);
return true;
@@ -246,7 +248,7 @@ bool bcache_zero_bytes(struct bcache *cache, int di, uint64_t start, size_t len)
static bool _set_partial(struct updater *u, int di, block_address bb, uint64_t offset, size_t len)
{
struct block *b;
- uint8_t val = *((uint8_t *) u->data);
+ uint8_t val = (u->data) ? *((uint8_t *) u->data) : 0;
if (!bcache_get(u->cache, di, bb, GF_DIRTY, &b))
return false;
@@ -260,7 +262,7 @@ static bool _set_partial(struct updater *u, int di, block_address bb, uint64_t o
static bool _set_whole(struct updater *u, int di, block_address bb, block_address be)
{
struct block *b;
- uint8_t val = *((uint8_t *) u->data);
+ uint8_t val = (u->data) ? *((uint8_t *) u->data) : 0;
uint64_t len = bcache_block_sectors(u->cache) * 512;
for (; bb != be; bb++) {
More information about the lvm-devel
mailing list