SearchPathA()

- Fix calculation of buffer size (fixes Skype crash)
Patch by Mikhail Denisenko (denisenkom@gmail.com)
See issue #4526 for more details.

svn path=/trunk/; revision=41295
This commit is contained in:
Dmitry Chapyshev 2009-06-06 08:14:11 +00:00
parent 2d592301c9
commit c071c35012

View file

@ -885,7 +885,7 @@ SearchPathA (
goto Cleanup; goto Cleanup;
} }
BufferU.MaximumLength = (USHORT)nBufferLength * sizeof(WCHAR); BufferU.MaximumLength = min(nBufferLength * sizeof(WCHAR), USHRT_MAX);
BufferU.Buffer = RtlAllocateHeap (RtlGetProcessHeap (), BufferU.Buffer = RtlAllocateHeap (RtlGetProcessHeap (),
0, 0,
BufferU.MaximumLength); BufferU.MaximumLength);
@ -895,7 +895,7 @@ SearchPathA (
goto Cleanup; goto Cleanup;
} }
Buffer.MaximumLength = (USHORT)nBufferLength; Buffer.MaximumLength = min(nBufferLength, USHRT_MAX);
Buffer.Buffer = lpBuffer; Buffer.Buffer = lpBuffer;
RetValue = SearchPathW (NULL == lpPath ? NULL : PathU.Buffer, RetValue = SearchPathW (NULL == lpPath ? NULL : PathU.Buffer,