From c865b3f8e0ba194ff0178c23cc97f6a7668cb5b3 Mon Sep 17 00:00:00 2001 From: Alexandre Julliard Date: Mon, 31 Jan 2011 14:18:30 +0100 Subject: [PATCH] ntdll: Fix frame address check in RtlCaptureStackBackTrace to match what RtlUnwind does. --- dlls/ntdll/signal_i386.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/dlls/ntdll/signal_i386.c b/dlls/ntdll/signal_i386.c index aff45096a2b..f86c81015eb 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; -- 2.11.4.GIT