Please Clang's sanitizer.
[openssl.git] / engines / ccgost / gost89.c
index b0568c6b3c8446e1dd5f1432b90f93f674e42400..c1474cb652715e1cf177a39a39762382d1a2adcb 100644 (file)
@@ -120,7 +120,7 @@ static void kboxinit(gost_ctx *c, const gost_subst_block *b)
        
        for (i = 0; i < 256; i++)
                {
-               c->k87[i] = (b->k8[i>>4] <<4 | b->k7 [i &15])<<24;
+               c->k87[i] = (word32)(b->k8[i>>4] <<4 | b->k7 [i &15])<<24;
                c->k65[i] = (b->k6[i>>4] << 4 | b->k5 [i &15])<<16;
                c->k43[i] = (b->k4[i>>4] <<4  | b->k3 [i &15])<<8;
                c->k21[i] = b->k2[i>>4] <<4  | b->k1 [i &15];
@@ -140,8 +140,8 @@ static word32 f(gost_ctx *c,word32 x)
 void gostcrypt(gost_ctx *c, const byte *in, byte *out)
        { 
        register word32 n1, n2; /* As named in the GOST */ 
-       n1 = in[0]|(in[1]<<8)|(in[2]<<16)|(in[3]<<24); 
-       n2 = in[4]|(in[5]<<8)|(in[6]<<16)|(in[7]<<24); 
+       n1 = in[0]|(in[1]<<8)|(in[2]<<16)|((word32)in[3]<<24); 
+       n2 = in[4]|(in[5]<<8)|(in[6]<<16)|((word32)in[7]<<24); 
        /* Instead of swapping halves, swap names each round */ 
         
        n2 ^= f(c,n1+c->k[0]); n1 ^= f(c,n2+c->k[1]); 
@@ -173,8 +173,8 @@ void gostcrypt(gost_ctx *c, const byte *in, byte *out)
 void gostdecrypt(gost_ctx *c, const byte *in,byte *out)
        { 
        register word32 n1, n2; /* As named in the GOST */ 
-       n1 = in[0]|(in[1]<<8)|(in[2]<<16)|(in[3]<<24); 
-       n2 = in[4]|(in[5]<<8)|(in[6]<<16)|(in[7]<<24); 
+       n1 = in[0]|(in[1]<<8)|(in[2]<<16)|((word32)in[3]<<24); 
+       n2 = in[4]|(in[5]<<8)|(in[6]<<16)|((word32)in[7]<<24); 
        
        n2 ^= f(c,n1+c->k[0]); n1 ^= f(c,n2+c->k[1]); 
        n2 ^= f(c,n1+c->k[2]); n1 ^= f(c,n2+c->k[3]); 
@@ -275,7 +275,7 @@ void gost_key(gost_ctx *c, const byte *k)
        int i,j; 
        for(i=0,j=0;i<8;i++,j+=4)
                {
-               c->k[i]=k[j]|(k[j+1]<<8)|(k[j+2]<<16)|(k[j+3]<<24);
+               c->k[i]=k[j]|(k[j+1]<<8)|(k[j+2]<<16)|((word32)k[j+3]<<24);
                }               
        } 
 
@@ -323,8 +323,8 @@ void mac_block(gost_ctx *c,byte *buffer,const  byte *block)
                {
                buffer[i]^=block[i];
                }         
-       n1 = buffer[0]|(buffer[1]<<8)|(buffer[2]<<16)|(buffer[3]<<24); 
-       n2 = buffer[4]|(buffer[5]<<8)|(buffer[6]<<16)|(buffer[7]<<24); 
+       n1 = buffer[0]|(buffer[1]<<8)|(buffer[2]<<16)|((word32)buffer[3]<<24); 
+       n2 = buffer[4]|(buffer[5]<<8)|(buffer[6]<<16)|((word32)buffer[7]<<24); 
        /* Instead of swapping halves, swap names each round */ 
         
        n2 ^= f(c,n1+c->k[0]); n1 ^= f(c,n2+c->k[1]);