[PATCH] kernel32: return copy of environment
blockinGetEnvironmentStringsW
Dmitry Timoshkov
dmitry at codeweavers.com
Sat Apr 7 04:04:34 CDT 2007
"Peter Beutner" <p.beutner at gmx.net> wrote:
>> Probably an exception handler should be added inside of RtlFreeHeap
>> instead.
> hm, i vaguely remember reading here that it was prefered not to cover up
> crashes produced by passing invalid pointers, unless absolutely necessary.
If the crash is caused by a NULL pointer then the fix is easy and doesn't
require using an exception handler, but it's not possible in this case.
> And here we can fix that nicely in some other way.
> See attached patch. Would that be acceptable as well?
>
> diff --git a/dlls/kernel32/environ.c b/dlls/kernel32/environ.c
> index 414ccbf..f7890cc 100644
> --- a/dlls/kernel32/environ.c
> +++ b/dlls/kernel32/environ.c
> @@ -148,6 +148,10 @@ LPWSTR WINAPI GetEnvironmentStringsW(void)
> */
> BOOL WINAPI FreeEnvironmentStringsA( LPSTR ptr )
> {
> + /* broken app passes ptr it got from GetEnvironmentStringsW */
> + if(ptr == NtCurrentTeb()->Peb->ProcessParameters->Environment)
> + return TRUE;
> +
> return HeapFree( GetProcessHeap(), 0, ptr );
> }
Personally I think that adding an exception handler or probably just a more
strict consistency check inside of RtlFreeHeap should be better.
--
Dmitry.
More information about the wine-devel
mailing list