Author: fireball Date: Sun Aug 31 06:55:17 2008 New Revision: 35831
URL: http://svn.reactos.org/svn/reactos?rev=35831&view=rev Log: - Fix over-reading the input buffer (sometimes by even more than 400 bytes), and hashing random pool contents instead of the specified buffer.
Modified: trunk/reactos/ntoskrnl/ob/obsdcach.c
Modified: trunk/reactos/ntoskrnl/ob/obsdcach.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ob/obsdcach.c?rev=... ============================================================================== --- trunk/reactos/ntoskrnl/ob/obsdcach.c [iso-8859-1] (original) +++ trunk/reactos/ntoskrnl/ob/obsdcach.c [iso-8859-1] Sun Aug 31 06:55:17 2008 @@ -81,11 +81,12 @@ 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 @@ Hash ^= *p++; Hash = _rotl(Hash, 3); } - + /* Loop non-aligned data */ pb = (PUCHAR)p; while (pb < ppb)