Module: wine Branch: master Commit: e7ba00c7ca848c4bb1a7a32ad5df8b77aed330bc URL: https://gitlab.winehq.org/wine/wine/-/commit/e7ba00c7ca848c4bb1a7a32ad5df8b7...
Author: Alex Henrie alexhenrie24@gmail.com Date: Mon Nov 28 22:05:13 2022 -0700
appwiz: Fix memory leak on realloc failure in install_from_registered_dir (cppcheck).
---
dlls/appwiz.cpl/addons.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/dlls/appwiz.cpl/addons.c b/dlls/appwiz.cpl/addons.c index c63106de95b..a5fdda3e81f 100644 --- a/dlls/appwiz.cpl/addons.c +++ b/dlls/appwiz.cpl/addons.c @@ -255,7 +255,7 @@ static HKEY open_config_key(void)
static enum install_res install_from_registered_dir(void) { - char *package_dir; + char *package_dir, *new_package_dir; HKEY hkey; DWORD res, type, size = MAX_PATH; enum install_res ret; @@ -267,8 +267,11 @@ static enum install_res install_from_registered_dir(void) package_dir = malloc(size); res = RegGetValueA(hkey, NULL, addon->dir_config_key, RRF_RT_ANY, &type, (PBYTE)package_dir, &size); if(res == ERROR_MORE_DATA) { - package_dir = realloc(package_dir, size); - res = RegGetValueA(hkey, NULL, addon->dir_config_key, RRF_RT_ANY, &type, (PBYTE)package_dir, &size); + new_package_dir = realloc(package_dir, size); + if(new_package_dir) { + package_dir = new_package_dir; + res = RegGetValueA(hkey, NULL, addon->dir_config_key, RRF_RT_ANY, &type, (PBYTE)package_dir, &size); + } } RegCloseKey(hkey); if(res == ERROR_FILE_NOT_FOUND) {