Module: wine Branch: master Commit: c865b3f8e0ba194ff0178c23cc97f6a7668cb5b3 URL: http://source.winehq.org/git/wine.git/?a=commit;h=c865b3f8e0ba194ff0178c23cc...
Author: Alexandre Julliard julliard@winehq.org Date: Mon Jan 31 14:18:30 2011 +0100
ntdll: Fix frame address check in RtlCaptureStackBackTrace to match what RtlUnwind does.
---
dlls/ntdll/signal_i386.c | 6 ++++-- 1 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/dlls/ntdll/signal_i386.c b/dlls/ntdll/signal_i386.c index aff4509..f86c810 100644 --- a/dlls/ntdll/signal_i386.c +++ b/dlls/ntdll/signal_i386.c @@ -2433,14 +2433,16 @@ USHORT WINAPI RtlCaptureStackBackTrace( ULONG skip, ULONG count, PVOID *buffer, while (skip--) { if (((void *)frame < NtCurrentTeb()->Tib.StackLimit) || - ((void *)(frame + 1) >= NtCurrentTeb()->Tib.StackBase)) return 0; + ((void *)(frame + 1) >= NtCurrentTeb()->Tib.StackBase) || + ((ULONG_PTR)frame & 3)) return 0; frame = (ULONG *)*frame; }
for (i = 0; i < count; i++) { if (((void *)frame < NtCurrentTeb()->Tib.StackLimit) || - ((void *)(frame + 1) >= NtCurrentTeb()->Tib.StackBase)) break; + ((void *)(frame + 1) >= NtCurrentTeb()->Tib.StackBase) || + ((ULONG_PTR)frame & 3)) break; buffer[i] = (void *)frame[1]; if (hash) *hash += frame[1]; frame = (ULONG *)*frame;