From e1b80cf07e2b5e504ea4a7faf9fd8060db55443d Mon Sep 17 00:00:00 2001 From: Aleksey Bragin Date: Sun, 31 Aug 2008 11:55:17 +0000 Subject: [PATCH] - Fix over-reading the input buffer (sometimes by even more than 400 bytes), and hashing random pool contents instead of the specified buffer. svn path=/trunk/; revision=35831 --- reactos/ntoskrnl/ob/obsdcach.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/reactos/ntoskrnl/ob/obsdcach.c b/reactos/ntoskrnl/ob/obsdcach.c index c339c8cdbe9..9a27a2a7b5c 100644 --- a/reactos/ntoskrnl/ob/obsdcach.c +++ b/reactos/ntoskrnl/ob/obsdcach.c @@ -81,11 +81,12 @@ ObpHash(IN PVOID Buffer, PULONG p, pp; PUCHAR pb, ppb; ULONG Hash = 0; - + /* Setup aligned and byte buffers */ p = Buffer; + pb = (PUCHAR)p; ppb = (PUCHAR)((ULONG_PTR)Buffer + Length); - pp = (PULONG)ALIGN_DOWN(p + Length, ULONG); + pp = (PULONG)ALIGN_DOWN(pb + Length, ULONG); /* Loop aligned data */ while (p < pp) @@ -94,7 +95,7 @@ ObpHash(IN PVOID Buffer, Hash ^= *p++; Hash = _rotl(Hash, 3); } - + /* Loop non-aligned data */ pb = (PUCHAR)p; while (pb < ppb)