Change shift expressions to unsigned types. Shifting signed values to

a result that is not representable has undefined behaviour.
This commit is contained in:
Thomas Köppe 2018-01-16 16:04:17 +00:00 committed by Zack Middleton
parent 7e2aa2c627
commit ed1794fe17
6 changed files with 11 additions and 8 deletions

View File

@ -1539,7 +1539,7 @@ void CL_RequestMotd( void ) {
info[0] = 0;
Com_sprintf( cls.updateChallenge, sizeof( cls.updateChallenge ), "%i", ((rand() << 16) ^ rand()) ^ Com_Milliseconds());
Com_sprintf( cls.updateChallenge, sizeof( cls.updateChallenge ), "%i", (int)((((unsigned int)rand() << 16) ^ (unsigned int)rand()) ^ Com_Milliseconds()));
Info_SetValueForKey( info, "challenge", cls.updateChallenge );
Info_SetValueForKey( info, "renderer", cls.glconfig.renderer_string );
@ -1768,7 +1768,7 @@ void CL_Connect_f( void ) {
clc.state = CA_CONNECTING;
// Set a client challenge number that ideally is mirrored back by the server.
clc.challenge = ((rand() << 16) ^ rand()) ^ Com_Milliseconds();
clc.challenge = (((unsigned int)rand() << 16) ^ (unsigned int)rand()) ^ Com_Milliseconds();
}
Key_SetCatcher( 0 );

View File

@ -106,8 +106,11 @@ static void copy64(uint32_t *M, byte *in)
int i;
for (i=0;i<16;i++)
M[i] = (in[i*4+3]<<24) | (in[i*4+2]<<16) |
(in[i*4+1]<<8) | (in[i*4+0]<<0);
M[i] =
((uint32_t)in[i*4+3] << 24) |
((uint32_t)in[i*4+2] << 16) |
((uint32_t)in[i*4+1] << 8) |
((uint32_t)in[i*4+0] << 0) ;
}
static void copy4(byte *out,uint32_t x)

View File

@ -52,7 +52,7 @@ to the new value before sending out any replies.
#define FRAGMENT_SIZE (MAX_PACKETLEN - 100)
#define PACKET_HEADER 10 // two ints and a short
#define FRAGMENT_BIT (1<<31)
#define FRAGMENT_BIT (1U<<31)
cvar_t *showpackets;
cvar_t *showdrop;

View File

@ -103,7 +103,7 @@ static int isu8(uint32_t v)
static int NextConstant4(void)
{
return (code[pc] | (code[pc+1]<<8) | (code[pc+2]<<16) | (code[pc+3]<<24));
return ((unsigned int)code[pc] | ((unsigned int)code[pc+1]<<8) | ((unsigned int)code[pc+2]<<16) | ((unsigned int)code[pc+3]<<24));
}
static int Constant4( void ) {

View File

@ -140,7 +140,7 @@ void SV_GetChallenge(netadr_t from)
}
// always generate a new challenge number, so the client cannot circumvent sv_maxping
challenge->challenge = ( (rand() << 16) ^ rand() ) ^ svs.time;
challenge->challenge = ( ((unsigned int)rand() << 16) ^ (unsigned int)rand() ) ^ svs.time;
challenge->wasrefused = qfalse;
challenge->time = svs.time;

View File

@ -468,7 +468,7 @@ void SV_SpawnServer( char *server, qboolean killBots ) {
Cvar_Set("cl_paused", "0");
// get a new checksum feed and restart the file system
sv.checksumFeed = ( ((int) rand() << 16) ^ rand() ) ^ Com_Milliseconds();
sv.checksumFeed = ( ((unsigned int)rand() << 16) ^ (unsigned int)rand() ) ^ Com_Milliseconds();
FS_Restart( sv.checksumFeed );
CM_LoadMap( va("maps/%s.bsp", server), qfalse, &checksum );