[WINSPOOL] Add a number of missing NULL checks.

This commit is contained in:
Timo Kreuzer 2023-09-30 19:17:33 +03:00
parent 02df49ebd8
commit 0e68e27ff6

View file

@ -753,6 +753,11 @@ PRINTER_INFO_9W * get_devmodeW(HANDLE hprn)
if (!res && (GetLastError() == ERROR_INSUFFICIENT_BUFFER)) if (!res && (GetLastError() == ERROR_INSUFFICIENT_BUFFER))
{ {
pi9 = HeapAlloc(hProcessHeap, 0, needed); pi9 = HeapAlloc(hProcessHeap, 0, needed);
if (!pi9)
{
ERR("Failed to allocate PRINTER_INFO_9W of %u bytes\n", needed);
return NULL;
}
res = GetPrinterW(hprn, 9, (LPBYTE)pi9, needed, &needed); res = GetPrinterW(hprn, 9, (LPBYTE)pi9, needed, &needed);
} }
@ -829,6 +834,11 @@ IntFixUpDevModeNames( PDOCUMENTPROPERTYHEADER pdphdr )
if (!res && (GetLastError() == ERROR_INSUFFICIENT_BUFFER)) if (!res && (GetLastError() == ERROR_INSUFFICIENT_BUFFER))
{ {
pi2 = HeapAlloc(hProcessHeap, 0, needed); pi2 = HeapAlloc(hProcessHeap, 0, needed);
if (!pi2)
{
ERR("Failed to allocate PRINTER_INFO_2W of %u bytes\n", needed);
return FALSE;
}
res = GetPrinterW( pdphdr->hPrinter, 2, (LPBYTE)pi2, needed, &needed); res = GetPrinterW( pdphdr->hPrinter, 2, (LPBYTE)pi2, needed, &needed);
} }
@ -1272,6 +1282,11 @@ PrinterProperties( HWND hWnd, HANDLE hPrinter )
if (!res && (GetLastError() == ERROR_INSUFFICIENT_BUFFER)) if (!res && (GetLastError() == ERROR_INSUFFICIENT_BUFFER))
{ {
pi2 = HeapAlloc(hProcessHeap, 0, needed); pi2 = HeapAlloc(hProcessHeap, 0, needed);
if (!pi2)
{
ERR("Failed to allocate PRINTER_INFO_2W of %u bytes\n", needed);
return FALSE;
}
res = GetPrinterW(hPrinter, 2, (LPBYTE)pi2, needed, &needed); res = GetPrinterW(hPrinter, 2, (LPBYTE)pi2, needed, &needed);
} }
@ -2805,6 +2820,11 @@ QuerySpoolMode( HANDLE hPrinter, PDWORD downloadFontsFlags, PDWORD dwVersion )
if (!res && (GetLastError() == ERROR_INSUFFICIENT_BUFFER)) if (!res && (GetLastError() == ERROR_INSUFFICIENT_BUFFER))
{ {
pi2 = HeapAlloc(hProcessHeap, 0, needed); pi2 = HeapAlloc(hProcessHeap, 0, needed);
if (!pi2)
{
ERR("Failed to allocate PRINTER_INFO_2W of %u bytes\n", needed);
return FALSE;
}
res = GetPrinterW(hPrinter, 2, (LPBYTE)pi2, needed, &needed); res = GetPrinterW(hPrinter, 2, (LPBYTE)pi2, needed, &needed);
} }
@ -3506,6 +3526,11 @@ INT_PTR CALLBACK file_dlg_proc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam
LPWSTR *output; LPWSTR *output;
filename = HeapAlloc(GetProcessHeap(), 0, (len + 1) * sizeof(WCHAR)); filename = HeapAlloc(GetProcessHeap(), 0, (len + 1) * sizeof(WCHAR));
if (!filename)
{
ERR("Failed to allocate filename of %u bytes\n", (len + 1) * sizeof(WCHAR));
return FALSE;
}
GetDlgItemTextW(hwnd, EDITBOX, filename, len + 1); GetDlgItemTextW(hwnd, EDITBOX, filename, len + 1);
if(GetFileAttributesW(filename) != INVALID_FILE_ATTRIBUTES) if(GetFileAttributesW(filename) != INVALID_FILE_ATTRIBUTES)
@ -3568,6 +3593,12 @@ StartDocDlgW( HANDLE hPrinter, DOCINFOW *doc )
if(GetLastError() != ERROR_INSUFFICIENT_BUFFER) if(GetLastError() != ERROR_INSUFFICIENT_BUFFER)
return NULL; return NULL;
pi5 = HeapAlloc(GetProcessHeap(), 0, len); pi5 = HeapAlloc(GetProcessHeap(), 0, len);
if (!pi5)
{
ERR("Failed to allocate PRINTER_INFO_5W of %u bytes\n", len);
return NULL;
}
GetPrinterW(hPrinter, 5, (LPBYTE)pi5, len, &len); GetPrinterW(hPrinter, 5, (LPBYTE)pi5, len, &len);
if (!pi5->pPortName || wcsicmp(pi5->pPortName, FILE_Port)) if (!pi5->pPortName || wcsicmp(pi5->pPortName, FILE_Port))
{ {
@ -3595,6 +3626,12 @@ StartDocDlgW( HANDLE hPrinter, DOCINFOW *doc )
return NULL; return NULL;
} }
ret = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR)); ret = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR));
if (!ret)
{
ERR("Failed to allocate path name buffer of %u bytes\n", len * sizeof(WCHAR));
HeapFree(GetProcessHeap(), 0, name);
return NULL;
}
GetFullPathNameW(name, len, ret, NULL); GetFullPathNameW(name, len, ret, NULL);
HeapFree(GetProcessHeap(), 0, name); HeapFree(GetProcessHeap(), 0, name);
} }
@ -3614,6 +3651,11 @@ StartDocDlgW( HANDLE hPrinter, DOCINFOW *doc )
return NULL; return NULL;
ret = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR)); ret = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR));
if (!ret)
{
ERR("Failed to allocate path name buffer of %u bytes\n", len * sizeof(WCHAR));
return NULL;
}
GetFullPathNameW(doc->lpszOutput, len, ret, NULL); GetFullPathNameW(doc->lpszOutput, len, ret, NULL);
attr = GetFileAttributesW(ret); attr = GetFileAttributesW(ret);
@ -3658,7 +3700,14 @@ StartDocDlgA( HANDLE hPrinter, DOCINFOA *doc )
{ {
DWORD len = WideCharToMultiByte(CP_ACP, 0, retW, -1, NULL, 0, NULL, NULL); DWORD len = WideCharToMultiByte(CP_ACP, 0, retW, -1, NULL, 0, NULL, NULL);
ret = HeapAlloc(GetProcessHeap(), 0, len); ret = HeapAlloc(GetProcessHeap(), 0, len);
if (ret)
{
WideCharToMultiByte(CP_ACP, 0, retW, -1, ret, len, NULL, NULL); WideCharToMultiByte(CP_ACP, 0, retW, -1, ret, len, NULL, NULL);
}
else
{
ERR("Failed to allocate path name buffer of %u bytes\n", len);
}
HeapFree(GetProcessHeap(), 0, retW); HeapFree(GetProcessHeap(), 0, retW);
} }