vlc | branch: master | Francois Cartegnie <[email protected]> | Wed Apr 15 17:36:02 2020 +0200| [d4fd13626395bd90226f80de13642cae7c6af7b3] | committer: Francois Cartegnie
test: bits: add double escape test > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=d4fd13626395bd90226f80de13642cae7c6af7b3 --- test/src/misc/bits.c | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/test/src/misc/bits.c b/test/src/misc/bits.c index 6f021e3b9e..df4e5c4923 100644 --- a/test/src/misc/bits.c +++ b/test/src/misc/bits.c @@ -285,6 +285,54 @@ static int test_annexb( const char *psz_tag ) test_assert(bs_remain( &bs ), 0); test_assert(bs_pos( &bs ), ARRAY_SIZE(annexb) * 8); + /* real world vps */ + const uint8_t vpsnal[] = { 0x40, 0x01, 0x0C, 0x01, 0xFF, 0xFF, 0x01, 0x60, + 0x00, 0x00, 0x03, 0x00, 0x40, 0x00, 0x00, 0x03, + 0x00, 0x00, 0x03, 0x00, 0x78, 0x10, 0x90, 0x24 }; + const uint8_t vpsnalunesc[] = { + 0x40, 0x01, 0x0C, 0x01, 0xFF, 0xFF, 0x01, 0x60, + 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x78, 0x10, 0x90, 0x24 }; + bs_init( &bs, vpsnal, ARRAY_SIZE(vpsnal) ); + hxxx_bsfw_ep3b_ctx_init( &bsctx ); + bs.cb = hxxx_bsfw_ep3b_callbacks; + bs.p_priv = &bsctx; + test_assert(bs_remain( &bs ), ARRAY_SIZE(vpsnalunesc) * 8); + for(size_t i=0; i<ARRAY_SIZE(vpsnalunesc); i++) + test_assert(bs_read(&bs, 8), vpsnalunesc[i]); + + /* real world sei, triggered double unescape bug */ + const uint8_t seinal[] = { 0x4E, 0x01, 0x01, 0x09, 0xB0, 0x00, 0x25, 0x70, + 0xE2, 0x00, 0x00, 0x03, 0x00, 0x03, 0x88, 0x06, + 0x60, 0x40, 0xF1, 0x4C, 0xB8, 0x10, 0x05, 0x1C, + 0xA8, 0x68, 0x7D, 0xD4, 0xD7, 0x59, 0x37, 0x58, + 0xA5, 0xCE, 0xF0, 0x33, 0x8B, 0x65, 0x45, 0xF1, + 0x1F, 0x00, 0x05, 0xFF, 0xA3, 0x55, 0xFF, 0x15, + 0x6D, 0xFF, 0xB0, 0x9D, 0x05, 0x1C, 0xDA, 0x84, + 0x22, 0x1F, 0x18, 0xEC, 0x53, 0x1A, 0x8E, 0x05, + 0x2C, 0x6D, 0xD1, 0xBF, 0x54, 0x3A, 0x1F, 0x16, + 0x06, 0xFF, 0x04, 0x5B, 0xFF, 0xB4, 0x79, 0xFF, + 0xE8, 0x14, 0x80 }; + const uint8_t seinalunesc[] = + { 0x4E, 0x01, 0x01, 0x09, 0xB0, 0x00, 0x25, 0x70, + 0xE2, 0x00, 0x00, 0x00, 0x03, 0x88, 0x06, + 0x60, 0x40, 0xF1, 0x4C, 0xB8, 0x10, 0x05, 0x1C, + 0xA8, 0x68, 0x7D, 0xD4, 0xD7, 0x59, 0x37, 0x58, + 0xA5, 0xCE, 0xF0, 0x33, 0x8B, 0x65, 0x45, 0xF1, + 0x1F, 0x00, 0x05, 0xFF, 0xA3, 0x55, 0xFF, 0x15, + 0x6D, 0xFF, 0xB0, 0x9D, 0x05, 0x1C, 0xDA, 0x84, + 0x22, 0x1F, 0x18, 0xEC, 0x53, 0x1A, 0x8E, 0x05, + 0x2C, 0x6D, 0xD1, 0xBF, 0x54, 0x3A, 0x1F, 0x16, + 0x06, 0xFF, 0x04, 0x5B, 0xFF, 0xB4, 0x79, 0xFF, + 0xE8, 0x14, 0x80 }; + bs_init( &bs, seinal, ARRAY_SIZE(seinal) ); + hxxx_bsfw_ep3b_ctx_init( &bsctx ); + bs.cb = hxxx_bsfw_ep3b_callbacks; + bs.p_priv = &bsctx; + test_assert(bs_remain( &bs ), ARRAY_SIZE(seinalunesc) * 8); + for(size_t i=0; i<ARRAY_SIZE(seinalunesc); i++) + test_assert(bs_read(&bs, 8), seinalunesc[i]); + return 0; } _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
