Fixed a really stupid (and old) bug in RtlComputeCrc32():
First parameter is initial CRC32 checksum. And it's complete and not partial, thus it needs to be an ULONG and not an USHORT.
This fixes CRC32 checksum computation with initial checksum (tested again Windows 2003 & Seven).
svn path=/trunk/; revision=48895
ULONG
NTAPI
RtlComputeCrc32(
- IN USHORT PartialCrc,
+ IN ULONG InitialCrc,
IN PUCHAR Buffer,
IN ULONG Length
);
* @implemented
*/
ULONG NTAPI
-RtlComputeCrc32 (IN USHORT Initial,
- IN PUCHAR Data,
- IN ULONG Length)
+RtlComputeCrc32(IN ULONG Initial,
+ IN PUCHAR Data,
+ IN ULONG Length)
{
- ULONG CrcValue;
+ ULONG CrcValue = ~Initial;
- DPRINT("(%lu,%p,%lu)\n", Initial, Data, Length);
+ DPRINT("(%d,%p,%d)\n", Initial, Data, Length);
- CrcValue = ~Initial;
while (Length > 0)
{
CrcValue = CrcTable[(CrcValue ^ *Data) & 0xff] ^ (CrcValue >> 8);