From ab3a465554eaf8a8605065ccd32a4bf809bca8c4 Mon Sep 17 00:00:00 2001 From: Seth Howell Date: Thu, 30 Jul 2020 15:10:19 -0700 Subject: [PATCH] lib/bdev: fix potential mem leak in part.c The way this is written currently, there is a (very very unlikely) chance that the first strdup fails and the second one succeeds. Just clean that up. Signed-off-by: Seth Howell Change-Id: I5ca1106c713753448a2bf988166a2d79ab9fa86d Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/3610 Community-CI: Mellanox Build Bot Reviewed-by: Changpeng Liu Reviewed-by: GangCao Reviewed-by: Tomasz Zawadzki Reviewed-by: Ben Walker Reviewed-by: Jim Harris Tested-by: SPDK CI Jenkins --- lib/bdev/part.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/lib/bdev/part.c b/lib/bdev/part.c index 01a395591..1f90ce492 100644 --- a/lib/bdev/part.c +++ b/lib/bdev/part.c @@ -484,12 +484,13 @@ spdk_bdev_part_construct(struct spdk_bdev_part *part, struct spdk_bdev_part_base part->internal.bdev.dif_check_flags = base->bdev->dif_check_flags; part->internal.bdev.name = strdup(name); - part->internal.bdev.product_name = strdup(product_name); - if (part->internal.bdev.name == NULL) { SPDK_ERRLOG("Failed to allocate name for new part of bdev %s\n", spdk_bdev_get_name(base->bdev)); return -1; - } else if (part->internal.bdev.product_name == NULL) { + } + + part->internal.bdev.product_name = strdup(product_name); + if (part->internal.bdev.product_name == NULL) { free(part->internal.bdev.name); SPDK_ERRLOG("Failed to allocate product name for new part of bdev %s\n", spdk_bdev_get_name(base->bdev));