summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHarish Mahendrakar <harish.mahendrakar@ittiam.com>2016-05-13 19:59:37 +0000
committerandroid-build-merger <android-build-merger@google.com>2016-05-13 19:59:37 +0000
commit18c905dd013ffbef11082f782b96b653f0d70777 (patch)
treee076be2aca12972193cf3d6754cc5f2c6b67ace6
parentf725093d8ba60dcb7724850cf668fa2b7c0a6473 (diff)
parent8a34f810ab8cc44db2251e8dc1c078fea3d36b6e (diff)
downloadlibmpeg2-nougat-cts-release.tar.gz
am: 8a34f810ab * commit '8a34f810ab8cc44db2251e8dc1c078fea3d36b6e': Fixed out of bound read in flush_bits Change-Id: If2bf55fa0d027e958d2e1e36ffe407e8944523a0
-rw-r--r--decoder/impeg2d_bitstream.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/decoder/impeg2d_bitstream.c b/decoder/impeg2d_bitstream.c
index b67161d..36092e5 100644
--- a/decoder/impeg2d_bitstream.c
+++ b/decoder/impeg2d_bitstream.c
@@ -191,12 +191,21 @@ INLINE UWORD8 impeg2d_bit_stream_get_bit(stream_t *ps_stream)
INLINE void impeg2d_bit_stream_flush(void* pv_ctxt, UWORD32 u4_no_of_bits)
{
stream_t *ps_stream = (stream_t *)pv_ctxt;
-
-
- if (ps_stream->u4_offset < ps_stream->u4_max_offset)
+ if ((ps_stream->u4_offset + 64) < ps_stream->u4_max_offset)
{
FLUSH_BITS(ps_stream->u4_offset,ps_stream->u4_buf,ps_stream->u4_buf_nxt,u4_no_of_bits,ps_stream->pu4_buf_aligned)
}
+ else
+ {
+ UWORD32 u4_temp;
+
+ if (((ps_stream->u4_offset & 0x1f) + u4_no_of_bits) >= 32)
+ {
+ ps_stream->u4_buf = ps_stream->u4_buf_nxt;
+ ps_stream->u4_buf_nxt = 0;
+ }
+ ps_stream->u4_offset += u4_no_of_bits;
+ }
return;
}
/******************************************************************************