From 12ed5275d138123b5c67e90494bde213b78337cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=BD=D0=B0=D0=B1?= Date: Fri, 30 Apr 2021 20:49:39 +0200 Subject: [PATCH] libzfs: zpool_load_compat(): don't free undefined pointers MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reviewed-by: Brian Behlendorf Signed-off-by: Ahelenia ZiemiaƄska Closes #11993 --- lib/libzutil/os/linux/zutil_device_path_os.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/lib/libzutil/os/linux/zutil_device_path_os.c b/lib/libzutil/os/linux/zutil_device_path_os.c index da7ffba764..dae5b89716 100644 --- a/lib/libzutil/os/linux/zutil_device_path_os.c +++ b/lib/libzutil/os/linux/zutil_device_path_os.c @@ -306,9 +306,10 @@ dm_get_underlying_path(const char *dm_name) else dev_str = tmp; - size = asprintf(&tmp, "/sys/block/%s/slaves/", dev_str); - if (size == -1 || !tmp) + if ((size = asprintf(&tmp, "/sys/block/%s/slaves/", dev_str)) == -1) { + tmp = NULL; goto end; + } dp = opendir(tmp); if (dp == NULL) @@ -334,7 +335,9 @@ dm_get_underlying_path(const char *dm_name) if (!enclosure_path) continue; - size = asprintf(&path, "/dev/%s", ep->d_name); + if ((size = asprintf( + &path, "/dev/%s", ep->d_name)) == -1) + path = NULL; free(enclosure_path); break; } @@ -352,7 +355,8 @@ end: * enclosure devices. Throw up out hands and return the first * underlying path. */ - size = asprintf(&path, "/dev/%s", first_path); + if ((size = asprintf(&path, "/dev/%s", first_path)) == -1) + path = NULL; } free(first_path);