From 6e0403647378b0df1420ff2f2ea0a62079aa9d8f Mon Sep 17 00:00:00 2001 From: =?utf8?q?Herv=C3=A9=20Poussineau?= Date: Thu, 11 May 2006 17:43:31 +0000 Subject: [PATCH] Some more error checking... svn path=/trunk/; revision=21889 --- reactos/dll/win32/setupapi/parser.c | 30 +++++++++++++++++++++++------ 1 file changed, 24 insertions(+), 6 deletions(-) diff --git a/reactos/dll/win32/setupapi/parser.c b/reactos/dll/win32/setupapi/parser.c index ff30c63fc6d..c7f1d7ef032 100644 --- a/reactos/dll/win32/setupapi/parser.c +++ b/reactos/dll/win32/setupapi/parser.c @@ -1302,12 +1302,15 @@ void WINAPI SetupCloseInfFile( HINF hinf ) struct inf_file *file = hinf; unsigned int i; - for (i = 0; i < file->nb_sections; i++) HeapFree( GetProcessHeap(), 0, file->sections[i] ); - HeapFree( GetProcessHeap(), 0, file->filename ); - HeapFree( GetProcessHeap(), 0, file->sections ); - HeapFree( GetProcessHeap(), 0, file->fields ); - HeapFree( GetProcessHeap(), 0, file->strings ); - HeapFree( GetProcessHeap(), 0, file ); + if (file != NULL) + { + for (i = 0; i < file->nb_sections; i++) HeapFree( GetProcessHeap(), 0, file->sections[i] ); + HeapFree( GetProcessHeap(), 0, file->filename ); + HeapFree( GetProcessHeap(), 0, file->sections ); + HeapFree( GetProcessHeap(), 0, file->fields ); + HeapFree( GetProcessHeap(), 0, file->strings ); + HeapFree( GetProcessHeap(), 0, file ); + } } @@ -1339,6 +1342,9 @@ LONG WINAPI SetupGetLineCountW( HINF hinf, PCWSTR section ) int section_index; LONG ret = -1; + if (hinf == NULL || hinf == INVALID_HANDLE_VALUE) + return ERROR_INVALID_PARAMETER; + for (file = hinf; file; file = file->next) { if ((section_index = find_section( file, section )) == -1) continue; @@ -1378,6 +1384,12 @@ BOOL WINAPI SetupGetLineByIndexW( HINF hinf, PCWSTR section, DWORD index, INFCON struct inf_file *file = hinf; int section_index; + if (hinf == NULL || hinf == INVALID_HANDLE_VALUE) + { + SetLastError(ERROR_INVALID_PARAMETER); + return FALSE; + } + SetLastError( ERROR_SECTION_NOT_FOUND ); for (file = hinf; file; file = file->next) { @@ -1438,6 +1450,12 @@ BOOL WINAPI SetupFindFirstLineW( HINF hinf, PCWSTR section, PCWSTR key, INFCONTE struct inf_file *file; int section_index; + if (hinf == NULL || hinf == INVALID_HANDLE_VALUE) + { + SetLastError(ERROR_INVALID_PARAMETER); + return FALSE; + } + SetLastError( ERROR_SECTION_NOT_FOUND ); for (file = hinf; file; file = file->next) { -- 2.17.1