]> granicus.if.org Git - libvpx/commitdiff
Fixed the buffer overflow issue
authorJingning Han <jingning@google.com>
Wed, 20 Feb 2013 23:32:17 +0000 (15:32 -0800)
committerJames Zern <jzern@google.com>
Fri, 22 Feb 2013 20:30:35 +0000 (12:30 -0800)
The issue that potentially broke the encoding process was due to the fact
that the length of token link is calculated from the total number of tokens
coded, while it is possible, in high bit-rate setting, this length is
greater than the buffer length initially assigned to the cpi->tok.

This patch increases the initially allocated buffer length assigned to
cpi->tok from
(mb_rows * mb_cols * 24 * 16) to (mb_rows * mb_cols * (1 + 24 * 16)).

It resolves the buffer overflow problem.

Change-Id: I8661a8d39ea0a3c24303e3f71a170787a1d5b1df

vp9/encoder/vp9_onyx_if.c

index fbdc2d2cca871b5e0170a5b084292ec90951568b..27e0e48a3e522c22d54082b391efed4351dafdce 100644 (file)
@@ -1148,7 +1148,7 @@ void vp9_alloc_compressor_data(VP9_COMP *cpi) {
   vpx_free(cpi->tok);
 
   {
-    unsigned int tokens = cm->mb_rows * cm->mb_cols * 24 * 16;
+    unsigned int tokens = cm->mb_rows * cm->mb_cols * (24 * 16 + 1);
 
     CHECK_MEM_ERROR(cpi->tok, vpx_calloc(tokens, sizeof(*cpi->tok)));
   }