https://git.reactos.org/?p=reactos.git;a=commitdiff;h=e7440eff8fb2092bea08de...
commit e7440eff8fb2092bea08def0db7f6d196167e5a4 Author: Serge Gautherie 32623169+SergeGautherie@users.noreply.github.com AuthorDate: Sat Jun 6 17:58:34 2020 +0200 Commit: GitHub noreply@github.com CommitDate: Sat Jun 6 17:58:34 2020 +0200
[APPHELP_APITEST] Properly handle a couple 'malloc()/free()' (#2898)
Detected by Cppcheck: memleak, redundantAssignment. Addendum to 78280ad2 (r71226). --- modules/rostests/apitests/apphelp/data.c | 12 ++++++++++-- modules/rostests/apitests/apphelp/layerapi.c | 16 +++++++++++++--- 2 files changed, 23 insertions(+), 5 deletions(-)
diff --git a/modules/rostests/apitests/apphelp/data.c b/modules/rostests/apitests/apphelp/data.c index 95dd9216194..58278271848 100644 --- a/modules/rostests/apitests/apphelp/data.c +++ b/modules/rostests/apitests/apphelp/data.c @@ -469,15 +469,23 @@ void test_create_exe_imp(const WCHAR* name, int skip_rsrc_exports) HANDLE file; char *buf, *cur; DWORD size = 0x800; + buf = malloc(size); + winetest_ok(buf != NULL, "malloc failed\n"); + if (buf == NULL) + { + return; + }
file = CreateFileW(name, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); winetest_ok(file != INVALID_HANDLE_VALUE, "can't create file\n"); - if(file == INVALID_HANDLE_VALUE) + if (file == INVALID_HANDLE_VALUE) + { + free(buf); return; + }
memset(buf, 0, size); - cur = buf; cur = memcpy(buf, &dos_header, sizeof(dos_header)); cur += dos_header.e_lfanew;
diff --git a/modules/rostests/apitests/apphelp/layerapi.c b/modules/rostests/apitests/apphelp/layerapi.c index 69306f220a9..72ccf9555c6 100644 --- a/modules/rostests/apitests/apphelp/layerapi.c +++ b/modules/rostests/apitests/apphelp/layerapi.c @@ -569,16 +569,26 @@ static BOOL create_file(LPCSTR dir, LPCSTR name, int filler, DWORD size) { char target[MAX_PATH], *tmp; HANDLE file; - PathCombineA(target, dir, name);
tmp = malloc(size); - memset(tmp, filler, size); + if (tmp == NULL) + { + SetLastError(ERROR_OUTOFMEMORY); + return FALSE; + } + + PathCombineA(target, dir, name);
file = CreateFileA(target, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); - if(file == INVALID_HANDLE_VALUE) + if (file == INVALID_HANDLE_VALUE) + { + free(tmp); return FALSE; + }
+ memset(tmp, filler, size); WriteFile(file, tmp, size, &size, NULL); + CloseHandle(file); free(tmp); return TRUE;