mirror of
https://github.com/RobinFassinaMoschiniForks/TransitionalPeriod
synced 2026-08-09 12:18:31 +00:00
38 lines
465 B
C
38 lines
465 B
C
|
|
#include "common.h"
|
|
|
|
SHARED ULONG HashString( IN PVOID Inp, IN ULONG Len )
|
|
{
|
|
ULONG hsh;
|
|
PUCHAR ptr;
|
|
UCHAR cur;
|
|
|
|
hsh = 5381;
|
|
ptr = Inp;
|
|
|
|
while ( TRUE )
|
|
{
|
|
cur = * ptr;
|
|
|
|
if ( ! Len ) {
|
|
if ( ! * ptr ) {
|
|
break;
|
|
};
|
|
} else {
|
|
if ( ( ULONG )( ptr - ( PUCHAR )Inp ) >= Len ) {
|
|
break;
|
|
};
|
|
if ( ! * ptr ) {
|
|
++ptr; continue;
|
|
};
|
|
};
|
|
|
|
if ( cur >= 'a' )
|
|
cur -= 0x20;
|
|
|
|
hsh = ((hsh << 5) + hsh) + cur; ++ptr;
|
|
};
|
|
|
|
return hsh;
|
|
};
|