From: Alex Henrie <alexhenrie24(a)gmail.com> --- dlls/odbccp32/odbccp32.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/dlls/odbccp32/odbccp32.c b/dlls/odbccp32/odbccp32.c index 90875121438..c912bc0f3cc 100644 --- a/dlls/odbccp32/odbccp32.c +++ b/dlls/odbccp32/odbccp32.c @@ -638,6 +638,7 @@ BOOL WINAPI SQLGetInstalledDriversW(WCHAR *buf, WORD size, WORD *sizeout) valuelen = 256; value = malloc(valuelen * sizeof(WCHAR)); + if (!value) goto oom; size--; @@ -647,7 +648,9 @@ BOOL WINAPI SQLGetInstalledDriversW(WCHAR *buf, WORD size, WORD *sizeout) res = RegEnumValueW(drivers, index, value, &len, NULL, NULL, NULL, NULL); while (res == ERROR_MORE_DATA) { - value = realloc(value, ++len * sizeof(WCHAR)); + free(value); + value = malloc(++len * sizeof(WCHAR)); + if (!value) goto oom; res = RegEnumValueW(drivers, index, value, &len, NULL, NULL, NULL, NULL); } if (res == ERROR_SUCCESS) @@ -673,6 +676,10 @@ BOOL WINAPI SQLGetInstalledDriversW(WCHAR *buf, WORD size, WORD *sizeout) if (sizeout) *sizeout = written; return ret; + +oom: + push_error(ODBC_ERROR_OUT_OF_MEM, odbc_error_out_of_mem); + return FALSE; } BOOL WINAPI SQLGetInstalledDrivers(char *buf, WORD size, WORD *sizeout) -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/3844