On Mon, Jul 04, 2011 at 11:06:15AM +0100, Måns Rullgård wrote:
> Kostya Shishkov <[email protected]> writes:
> 
> > ---
> >  libavutil/sha.c |    4 ++--
> >  1 files changed, 2 insertions(+), 2 deletions(-)
> >
> > diff --git a/libavutil/sha.c b/libavutil/sha.c
> > index ae6069d..b941b4a 100644
> > --- a/libavutil/sha.c
> > +++ b/libavutil/sha.c
> > @@ -42,7 +42,7 @@ const int av_sha_size = sizeof(AVSHA);
> >  #define rol(value, bits) (((value) << (bits)) | ((value) >> (32 - (bits))))
> >  
> >  /* (R0+R1), R2, R3, R4 are the different operations used in SHA1 */
> > -#define blk0(i) (block[i] = av_be2ne32(((const uint32_t*)buffer)[i]))
> > +#define blk0(i) (block[i] = AV_RB32(((const uint8_t*)buffer) + 4 * (i)))
> 
> Drop the cast, buffer is already a uint8_t *.
> 
> >  #define blk(i)  (block[i] = rol(block[i-3] ^ block[i-8] ^ block[i-14] ^ 
> > block[i-16], 1))
> >  
> >  #define R0(v,w,x,y,z,i) z += ((w&(x^y))^y)     + blk0(i) + 0x5A827999 + 
> > rol(v, 5); w = rol(w, 30);
> > @@ -67,7 +67,7 @@ static void sha1_transform(uint32_t state[5], const 
> > uint8_t buffer[64])
> >      for (i = 0; i < 80; i++) {
> >          int t;
> >          if (i < 16)
> > -            t = av_be2ne32(((uint32_t*)buffer)[i]);
> > +            t = AV_RB32(buffer + 4 * i);
> >          else
> >              t = rol(block[i-3] ^ block[i-8] ^ block[i-14] ^ block[i-16], 
> > 1);
> >          block[i] = t;
> > -- 
> 
> Looks OK otherwise.

Here you are.
>From 2338a2c7037fb50508084270b56617ee69d73344 Mon Sep 17 00:00:00 2001
From: Kostya Shishkov <[email protected]>
Date: Mon, 4 Jul 2011 11:57:46 +0200
Subject: [PATCH] sha: use AV_RB32() instead of assuming that buffer can be cast to uint32_t*

---
 libavutil/sha.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/libavutil/sha.c b/libavutil/sha.c
index ae6069d..5af742d 100644
--- a/libavutil/sha.c
+++ b/libavutil/sha.c
@@ -42,7 +42,7 @@ const int av_sha_size = sizeof(AVSHA);
 #define rol(value, bits) (((value) << (bits)) | ((value) >> (32 - (bits))))
 
 /* (R0+R1), R2, R3, R4 are the different operations used in SHA1 */
-#define blk0(i) (block[i] = av_be2ne32(((const uint32_t*)buffer)[i]))
+#define blk0(i) (block[i] = AV_RB32(buffer + 4 * (i)))
 #define blk(i)  (block[i] = rol(block[i-3] ^ block[i-8] ^ block[i-14] ^ block[i-16], 1))
 
 #define R0(v,w,x,y,z,i) z += ((w&(x^y))^y)     + blk0(i) + 0x5A827999 + rol(v, 5); w = rol(w, 30);
@@ -67,7 +67,7 @@ static void sha1_transform(uint32_t state[5], const uint8_t buffer[64])
     for (i = 0; i < 80; i++) {
         int t;
         if (i < 16)
-            t = av_be2ne32(((uint32_t*)buffer)[i]);
+            t = AV_RB32(buffer + 4 * i);
         else
             t = rol(block[i-3] ^ block[i-8] ^ block[i-14] ^ block[i-16], 1);
         block[i] = t;
-- 
1.7.0.4

_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to