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 */
{--
⑨