shithub: opus

Download patch

ref: 5854a9f7de06ab3505b8fe6e8943db581c2cbe70
parent: 2ad8669960721cb259e4e28c8e091ffe73a864a0
author: Timothy B. Terriberry <tterribe@xiph.org>
date: Thu Jul 25 16:19:39 EDT 2024

Improve extension generator buffer too small test.

Test multiple buffer lengths and ensure we do not write past the
 end of the provided buffer.

--- a/tests/test_opus_extensions.c
+++ b/tests/test_opus_extensions.c
@@ -149,8 +149,24 @@
    unsigned char packet[100];
 
    /* buffer too small */
-   result = opus_packet_extensions_generate(packet, 4, ext, 4, 1);
-   expect_true(result == OPUS_BUFFER_TOO_SMALL, "expected OPUS_BUFFER_TOO_SMALL");
+   {
+      opus_int32 len;
+      /* this failure can occur at lots of points, so iterate to check as many
+          as possible */
+      for (len=0;len<23;len++)
+      {
+         size_t i;
+         for (i=len;i<sizeof(packet);i++) packet[i] = 0xFE;
+         result = opus_packet_extensions_generate(packet, len, ext, 4, 1);
+         expect_true(result == OPUS_BUFFER_TOO_SMALL,
+          "expected OPUS_BUFFER_TOO_SMALL");
+         for (i=len;i<sizeof(packet);i++)
+         {
+            expect_true(packet[i] == 0xFE,
+             "expected 0xFE padding to be undisturbed");
+         }
+      }
+   }
 
    /* invalid id */
    {
--