Module: wine Branch: master Commit: 4f74de5b366275ea522e269d29d2011a7b153e9e URL: http://source.winehq.org/git/wine.git/?a=commit;h=4f74de5b366275ea522e269d29...
Author: Aleksey Bragin aleksey@reactos.org Date: Wed Dec 24 06:04:25 2008 +0400
ntdll: Fix buffer overread in RtlNumberOfSetBits.
---
dlls/ntdll/rtlbitmap.c | 9 ++++++--- 1 files changed, 6 insertions(+), 3 deletions(-)
diff --git a/dlls/ntdll/rtlbitmap.c b/dlls/ntdll/rtlbitmap.c index ef033b2..806e0e8 100644 --- a/dlls/ntdll/rtlbitmap.c +++ b/dlls/ntdll/rtlbitmap.c @@ -555,9 +555,12 @@ ULONG WINAPI RtlNumberOfSetBits(PCRTL_BITMAP lpBits) lpOut++; }
- bMasked = *lpOut & NTDLL_maskBits[ulRemainder]; - ulSet += NTDLL_nibbleBitCount[bMasked >> 4]; - ulSet += NTDLL_nibbleBitCount[bMasked & 0xf]; + if (ulRemainder) + { + bMasked = *lpOut & NTDLL_maskBits[ulRemainder]; + ulSet += NTDLL_nibbleBitCount[bMasked >> 4]; + ulSet += NTDLL_nibbleBitCount[bMasked & 0xf]; + } } return ulSet; }