X264保存一系列指针指向各种用作自定义量化矩阵(CQMs)、死区量化等的数组,他们存储在主x264_t结构体中,如下:
uint16_t (*quant4_bias[4])[16]; /* [4][52][16] */
uint16_t (*quant8_bias[2])[64]; /* [2][52][64] */
这些内存在程序开始的时候分配,并在x264结束的时候被删除。不幸的是,删除的代码像这样:
for( i = 0; i < 6; i++ )
{
…
x264_free( h->quant4_bias[i] );
}
这是一个很明显的数组溢出的问题。
http://x264dev.multimedia.cx/?p=3