libbluray | branch: master | hpi1 <[email protected]> | Sun Dec 4 12:18:53 2011 +0200| [1257bf7445c5678c2e6a627fe57d8fe76e4718a4] | committer: hpi1
_decode_rle(): moved oversized image check to decode loop > http://git.videolan.org/gitweb.cgi/libbluray.git/?a=commit;h=1257bf7445c5678c2e6a627fe57d8fe76e4718a4 --- src/libbluray/decoders/pg_decode.c | 9 +++++---- 1 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/libbluray/decoders/pg_decode.c b/src/libbluray/decoders/pg_decode.c index b970d1e..18e1c0a 100644 --- a/src/libbluray/decoders/pg_decode.c +++ b/src/libbluray/decoders/pg_decode.c @@ -148,6 +148,11 @@ static int _decode_rle(BITBUFFER *bb, BD_PG_OBJECT *p) pixels_left -= len; + if (pixels_left < 0) { + BD_DEBUG(DBG_DECODE, "pg_decode_object(): too many pixels (%d)\n", -pixels_left); + return 0; + } + num_rle++; if (num_rle >= rle_size) { void *tmp = p->img; @@ -166,10 +171,6 @@ static int _decode_rle(BITBUFFER *bb, BD_PG_OBJECT *p) BD_DEBUG(DBG_DECODE, "pg_decode_object(): missing %d pixels\n", pixels_left); return 0; } - if (pixels_left < 0) { - BD_DEBUG(DBG_DECODE, "pg_decode_object(): too many pixels (%d)\n", -pixels_left); - return 0; - } return 1; } _______________________________________________ libbluray-devel mailing list [email protected] http://mailman.videolan.org/listinfo/libbluray-devel
