mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2026-05-22 02:27:36 +03:00
nvlist leaked in zpool_find_config()
In `zpool_find_config()`, the `pools` nvlist is leaked. Part of it (a sub-nvlist) is returned in `*configp`, but the callers also leak that. Additionally, in `zdb.c:main()`, the `searchdirs` is leaked. The leaks were detected by ASAN (`configure --enable-asan`). This commit resolves the leaks. Reviewed-by: Igor Kozhukhov <igor@dilos.org> Reviewed-by: Ryan Moeller <ryan@iXsystems.com> Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by: Matthew Ahrens <mahrens@delphix.com> Closes #11396
This commit is contained in:
committed by
Brian Behlendorf
parent
40ab927ae8
commit
b6722b871b
@@ -1539,7 +1539,7 @@ zpool_find_config(void *hdl, const char *target, nvlist_t **configp,
|
||||
nvlist_t *pools;
|
||||
nvlist_t *match = NULL;
|
||||
nvlist_t *config = NULL;
|
||||
char *name = NULL, *sepp = NULL;
|
||||
char *sepp = NULL;
|
||||
char sep = '\0';
|
||||
int count = 0;
|
||||
char *targetdup = strdup(target);
|
||||
@@ -1563,11 +1563,11 @@ zpool_find_config(void *hdl, const char *target, nvlist_t **configp,
|
||||
/* multiple matches found */
|
||||
continue;
|
||||
} else {
|
||||
match = config;
|
||||
name = nvpair_name(elem);
|
||||
match = fnvlist_dup(config);
|
||||
}
|
||||
}
|
||||
}
|
||||
fnvlist_free(pools);
|
||||
}
|
||||
|
||||
if (count == 0) {
|
||||
@@ -1577,6 +1577,7 @@ zpool_find_config(void *hdl, const char *target, nvlist_t **configp,
|
||||
|
||||
if (count > 1) {
|
||||
free(targetdup);
|
||||
fnvlist_free(match);
|
||||
return (EINVAL);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user