mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-09-28 09:45:00 +03:00
nss: Fix memory leak in findLease()
path is allocated by asprintf() and must be freed later if realloc() fails. Restructure the code to allocate path only after realloc() succeeds, avoiding the need for an extra free(). Found by Linux Verification Center (linuxtesting.org) with Svace. Reported-by: Dmitry Fedin <d.fedin@fobos-nt.ru> Signed-off-by: Alexander Kuznetsov <kuznetsovam@altlinux.org> Signed-off-by: Michal Privoznik <mprivozn@redhat.com> Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
This commit is contained in:
committed by
Michal Privoznik
parent
5de27c32a1
commit
faa98ca6d3
@@ -137,13 +137,15 @@ findLease(const char *name,
|
||||
|
||||
if (dlen >= 7 && !strcmp(entry->d_name + dlen - 7, ".status")) {
|
||||
char **tmpLease;
|
||||
if (asprintf(&path, "%s/%s", leaseDir, entry->d_name) < 0)
|
||||
goto cleanup;
|
||||
|
||||
tmpLease = realloc(leaseFiles, sizeof(char *) * (nleaseFiles + 1));
|
||||
if (!tmpLease)
|
||||
goto cleanup;
|
||||
leaseFiles = tmpLease;
|
||||
|
||||
if (asprintf(&path, "%s/%s", leaseDir, entry->d_name) < 0)
|
||||
goto cleanup;
|
||||
|
||||
leaseFiles[nleaseFiles++] = path;
|
||||
#if defined(LIBVIRT_NSS_GUEST)
|
||||
} else if (dlen >= 5 && !strcmp(entry->d_name + dlen - 5, ".macs")) {
|
||||
|
Reference in New Issue
Block a user