097f276
Description: Fix buffer overflow causing an invalid pointer free().
097f276
Author: Guillem Jover <guillem@debian.org>
097f276
Origin: vendor
097f276
Bug-Debian: https://bugs.debian.org/774015
097f276
Forwarded: no
097f276
Last-Update: 2015-02-26
097f276
097f276
---
097f276
 decode.c |    6 +++---
097f276
 1 file changed, 3 insertions(+), 3 deletions(-)
097f276
097f276
--- a/decode.c
097f276
+++ b/decode.c
097f276
@@ -255,7 +255,7 @@ void read_pt_len(int nn, int nbit, int i
097f276
    if(i==i_special)
097f276
    {
097f276
     c=getbits(2);
097f276
-    while(--c>=0)
097f276
+    while(--c>=0&&i
097f276
      pt_len[i++]=0;
097f276
    }
097f276
   }
097f276
@@ -314,10 +314,10 @@ void read_c_len()
097f276
      c=getbits(CBIT);
097f276
      c+=20;
097f276
     }
097f276
-    while(--c>=0)
097f276
+    while(--c>=0&&i
097f276
      c_len[i++]=0;
097f276
    }
097f276
-   else
097f276
+   else if (i
097f276
     c_len[i++]=(unsigned char)(c-2);
097f276
   }
097f276
   while(i