ref: 05942e77a23efcda10c0b8d0c08aaf23221a044b
parent: f1db6b9d75574ba292c75fdfee3eeda19745f73e
author: Jean-Marc Valin <jmvalin@amazon.com>
date: Wed Jan 25 11:47:10 EST 2023
Fix padding overwriting the packet content
--- a/src/repacketizer.c
+++ b/src/repacketizer.c
@@ -107,6 +107,7 @@
opus_int16 *len;
const unsigned char **frames;
unsigned char * ptr;
+ int ones_begin=0, ones_end=0;
if (begin<0 || begin>=end || end>rp->nb_frames)
{
@@ -205,8 +206,8 @@
return OPUS_BUFFER_TOO_SMALL;
OPUS_MOVE(&data[tot_size+pad_amount-ext_len], &data[tot_size], ext_len);
/* Prepend 0x01 padding */
- for (i=tot_size+nb_255s+1;i<tot_size+pad_amount-ext_len;i++)
- data[i] = 0x01;
+ ones_begin = tot_size+nb_255s+1;
+ ones_end = tot_size+pad_amount-ext_len;
for (i=0;i<nb_255s;i++)
*ptr++ = 255;
*ptr++ = pad_amount-255*nb_255s-1;
@@ -232,6 +233,8 @@
OPUS_MOVE(ptr, frames[i], len[i]);
ptr += len[i];
}
+ for (i=ones_begin;i<ones_end;i++)
+ data[i] = 0x01;
if (pad && nb_extensions==0)
{
/* Fill padding with zeros. */
--
⑨