engine: fix some ubsan warnings (alignment, integer limits...)

This commit is contained in:
Alibek Omarov 2024-10-15 23:41:05 +03:00
parent e81a0ded11
commit e7564420c9
2 changed files with 6 additions and 6 deletions

View file

@ -1048,7 +1048,7 @@ static void CL_GetCDKey( char *protinfo, size_t protinfosize )
char key[64]; char key[64];
int keylength; int keylength;
keylength = Q_snprintf( key, sizeof( key ), "%u", COM_RandomLong( 0, 0x7fffffff )); keylength = Q_snprintf( key, sizeof( key ), "%u", COM_RandomLong( 0, 0x7ffffffe ));
MD5Init( &ctx ); MD5Init( &ctx );
MD5Update( &ctx, key, keylength ); MD5Update( &ctx, key, keylength );

View file

@ -33,7 +33,7 @@ static const byte mungify_table3[] =
0x0A, 0x2D, 0x48, 0x0C, 0x4A, 0x12, 0xA9, 0xB5, 0x0A, 0x2D, 0x48, 0x0C, 0x4A, 0x12, 0xA9, 0xB5,
}; };
static int COM_SwapLong( int c ) static uint COM_SwapLong( uint c )
{ {
return ((( c >> 0 ) & 0xFF) << 24 ) + return ((( c >> 0 ) & 0xFF) << 24 ) +
((( c >> 8 ) & 0xFF) << 16 ) + ((( c >> 8 ) & 0xFF) << 16 ) +
@ -48,12 +48,12 @@ static void COM_GenericMunge( byte *data, const size_t len, const int seq, const
for( i = 0; i < mungelen; i++ ) for( i = 0; i < mungelen; i++ )
{ {
uint *pc, c; uint32_t c;
void *pc = &data[i * 4];
byte *p; byte *p;
int j; int j;
pc = (uint *)&data[i * 4]; memcpy( &c, pc, sizeof( c ));
c = *pc;
c ^= seq; c ^= seq;
if( !reverse ) if( !reverse )
c = COM_SwapLong( c ); c = COM_SwapLong( c );
@ -65,7 +65,7 @@ static void COM_GenericMunge( byte *data, const size_t len, const int seq, const
if( reverse ) if( reverse )
c = COM_SwapLong( c ); c = COM_SwapLong( c );
c ^= ~seq; c ^= ~seq;
*pc = c; memcpy( pc, &c, sizeof( c ));
} }
} }