[vlc-commits] test: bits: add double escape test

Francois Cartegnie git at videolan.org
Wed Apr 15 17:56:12 CEST 2020


vlc | branch: master | Francois Cartegnie <fcvlcdev at free.fr> | 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;
 }
 



More information about the vlc-commits mailing list