mirror of https://github.com/xemu-project/xemu.git
qga-win: Fix handle leak in ga_get_win_product_name()
In ga_get_win_product_name() a handle to Registry key was open but not closed. In this patch the handle is closed as part of the free routine. Buglink: https://bugzilla.redhat.com/show_bug.cgi?id=1929144 Signed-off-by: Basil Salman <basil@daynix.com> Signed-off-by: Basil Salman <bsalman@redhat.com> Signed-off-by: Michael Roth <michael.roth@amd.com>
This commit is contained in:
parent
02ac3f4b95
commit
ce72f11274
|
@ -2231,7 +2231,7 @@ static char *ga_get_win_name(OSVERSIONINFOEXW const *os_version, bool id)
|
||||||
|
|
||||||
static char *ga_get_win_product_name(Error **errp)
|
static char *ga_get_win_product_name(Error **errp)
|
||||||
{
|
{
|
||||||
HKEY key = NULL;
|
HKEY key = INVALID_HANDLE_VALUE;
|
||||||
DWORD size = 128;
|
DWORD size = 128;
|
||||||
char *result = g_malloc0(size);
|
char *result = g_malloc0(size);
|
||||||
LONG err = ERROR_SUCCESS;
|
LONG err = ERROR_SUCCESS;
|
||||||
|
@ -2241,7 +2241,8 @@ static char *ga_get_win_product_name(Error **errp)
|
||||||
&key);
|
&key);
|
||||||
if (err != ERROR_SUCCESS) {
|
if (err != ERROR_SUCCESS) {
|
||||||
error_setg_win32(errp, err, "failed to open registry key");
|
error_setg_win32(errp, err, "failed to open registry key");
|
||||||
goto fail;
|
g_free(result);
|
||||||
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
err = RegQueryValueExA(key, "ProductName", NULL, NULL,
|
err = RegQueryValueExA(key, "ProductName", NULL, NULL,
|
||||||
|
@ -2262,9 +2263,13 @@ static char *ga_get_win_product_name(Error **errp)
|
||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
RegCloseKey(key);
|
||||||
return result;
|
return result;
|
||||||
|
|
||||||
fail:
|
fail:
|
||||||
|
if (key != INVALID_HANDLE_VALUE) {
|
||||||
|
RegCloseKey(key);
|
||||||
|
}
|
||||||
g_free(result);
|
g_free(result);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue