mirror of
https://github.com/reactos/reactos.git
synced 2024-10-04 00:13:57 +00:00
[RTL]
- Fix a buffer overflow in RtlSetBits/RtlClearBits svn path=/trunk/; revision=64867
This commit is contained in:
parent
dfde71668b
commit
268d1c62fe
|
@ -362,8 +362,11 @@ RtlClearBits(
|
||||||
|
|
||||||
/* Clear what's left */
|
/* Clear what's left */
|
||||||
NumberToClear &= (_BITCOUNT - 1);
|
NumberToClear &= (_BITCOUNT - 1);
|
||||||
Mask = MAXINDEX << NumberToClear;
|
if (NumberToClear)
|
||||||
*Buffer &= Mask;
|
{
|
||||||
|
Mask = MAXINDEX << NumberToClear;
|
||||||
|
*Buffer &= Mask;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
|
@ -419,8 +422,11 @@ RtlSetBits(
|
||||||
|
|
||||||
/* Set what's left */
|
/* Set what's left */
|
||||||
NumberToSet &= (_BITCOUNT - 1);
|
NumberToSet &= (_BITCOUNT - 1);
|
||||||
Mask = MAXINDEX << NumberToSet;
|
if (NumberToSet)
|
||||||
*Buffer |= ~Mask;
|
{
|
||||||
|
Mask = MAXINDEX << NumberToSet;
|
||||||
|
*Buffer |= ~Mask;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOLEAN
|
BOOLEAN
|
||||||
|
|
|
@ -200,6 +200,11 @@ Test_RtlClearBits(void)
|
||||||
ok_hex(Buffer[0], 0x00001fff);
|
ok_hex(Buffer[0], 0x00001fff);
|
||||||
ok_hex(Buffer[1], 0xfffffff8);
|
ok_hex(Buffer[1], 0xfffffff8);
|
||||||
|
|
||||||
|
memset(Buffer, 0xff, BufferSize);
|
||||||
|
RtlClearBits(&BitMapHeader, 63, 1);
|
||||||
|
ok_hex(Buffer[0], 0xffffffff);
|
||||||
|
ok_hex(Buffer[1], 0x7fffffff);
|
||||||
|
|
||||||
memset(Buffer, 0xcc, BufferSize);
|
memset(Buffer, 0xcc, BufferSize);
|
||||||
RtlClearBits(&BitMapHeader, 3, 6);
|
RtlClearBits(&BitMapHeader, 3, 6);
|
||||||
RtlClearBits(&BitMapHeader, 11, 5);
|
RtlClearBits(&BitMapHeader, 11, 5);
|
||||||
|
@ -245,6 +250,11 @@ Test_RtlSetBits(void)
|
||||||
ok_hex(Buffer[0], 0xffffe000);
|
ok_hex(Buffer[0], 0xffffe000);
|
||||||
ok_hex(Buffer[1], 0x00000007);
|
ok_hex(Buffer[1], 0x00000007);
|
||||||
|
|
||||||
|
memset(Buffer, 0x00, BufferSize);
|
||||||
|
RtlSetBits(&BitMapHeader, 63, 1);
|
||||||
|
ok_hex(Buffer[0], 0x00000000);
|
||||||
|
ok_hex(Buffer[1], 0x80000000);
|
||||||
|
|
||||||
memset(Buffer, 0xcc, BufferSize);
|
memset(Buffer, 0xcc, BufferSize);
|
||||||
RtlSetBits(&BitMapHeader, 3, 6);
|
RtlSetBits(&BitMapHeader, 3, 6);
|
||||||
RtlSetBits(&BitMapHeader, 11, 5);
|
RtlSetBits(&BitMapHeader, 11, 5);
|
||||||
|
|
Loading…
Reference in a new issue