OSDN Git Service

libstagefright: fix possible overflow in amrwbenc.
authorWei Jia <wjia@google.com>
Wed, 12 Aug 2015 17:08:41 +0000 (10:08 -0700)
committerWei Jia <wjia@google.com>
Thu, 13 Aug 2015 16:49:35 +0000 (16:49 +0000)
Bug: 23142203
Change-Id: I309df51e4df6412655f04cc093d792bf6c7944f7
(cherry picked from commit 9dd01777aa14bbb90a6cdccf97383bb4e3d717a5)

media/libstagefright/codecs/amrwbenc/src/util.c

index 76ab1b1..333140d 100644 (file)
@@ -35,9 +35,10 @@ void Set_zero(
             )
 {
        Word32 num = (Word32)L;
-       do{
+       while (num > 0) {
                *x++ = 0;
-       }while(--num !=0);
+                --num;
+       }
 }
 
 
@@ -54,20 +55,22 @@ void Copy(
         )
 {
        Word32  temp1,temp2,num;
+        if (L <= 0) {
+                return;
+        }
        if(L&1)
        {
                temp1 = *x++;
                *y++ = temp1;
        }
        num = (Word32)(L>>1);
-       temp1 = *x++;
-       temp2 = *x++;
-       do{
-               *y++ = temp1;
-               *y++ = temp2;
+       while (num > 0) {
                temp1 = *x++;
                temp2 = *x++;
-       }while(--num!=0);
+               *y++ = temp1;
+               *y++ = temp2;
+                --num;
+       }
 }