From 2f6e7535b57073e59bd2c87382a7acee72985048 Mon Sep 17 00:00:00 2001 From: Dmitry Chapyshev Date: Wed, 11 Feb 2009 13:54:29 +0000 Subject: [PATCH] - Add params checking. It fixes Autoruns (9.38) crashes svn path=/trunk/; revision=39548 --- reactos/dll/win32/kernel32/file/dir.c | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/reactos/dll/win32/kernel32/file/dir.c b/reactos/dll/win32/kernel32/file/dir.c index e7285913d6c..c417279ad25 100644 --- a/reactos/dll/win32/kernel32/file/dir.c +++ b/reactos/dll/win32/kernel32/file/dir.c @@ -914,19 +914,23 @@ SearchPathA ( BufferU.Length = wcslen(BufferU.Buffer) * sizeof(WCHAR); /* convert ansi (or oem) string to unicode */ if (bIsFileApiAnsi) - RtlUnicodeStringToAnsiString (&Buffer, - &BufferU, - FALSE); + Status = RtlUnicodeStringToAnsiString(&Buffer, + &BufferU, + FALSE); else - RtlUnicodeStringToOemString (&Buffer, - &BufferU, - FALSE); - /* nul-terminate ascii string */ - Buffer.Buffer[BufferU.Length / sizeof(WCHAR)] = '\0'; + Status = RtlUnicodeStringToOemString(&Buffer, + &BufferU, + FALSE); - if (NULL != lpFilePart && BufferU.Length != 0) + if (NT_SUCCESS(Status) && Buffer.Buffer) { + /* nul-terminate ascii string */ + Buffer.Buffer[BufferU.Length / sizeof(WCHAR)] = '\0'; + + if (NULL != lpFilePart && BufferU.Length != 0) + { *lpFilePart = strrchr (lpBuffer, '\\') + 1; + } } }