Skip to content
Snippets Groups Projects
Commit 259e1666 authored by Jean-Marc Valin's avatar Jean-Marc Valin
Browse files

Fix packet length handling for 16-bit machines (makes no difference on 32-bit)

parent 54f7cb46
No related branches found
No related tags found
No related merge requests found
...@@ -589,7 +589,7 @@ static int opus_packet_parse_impl(const unsigned char *data, opus_int32 len, ...@@ -589,7 +589,7 @@ static int opus_packet_parse_impl(const unsigned char *data, opus_int32 len,
int cbr; int cbr;
unsigned char ch, toc; unsigned char ch, toc;
int framesize; int framesize;
int last_size; opus_int32 last_size;
const unsigned char *data0 = data; const unsigned char *data0 = data;
if (size==NULL) if (size==NULL)
...@@ -615,7 +615,9 @@ static int opus_packet_parse_impl(const unsigned char *data, opus_int32 len, ...@@ -615,7 +615,9 @@ static int opus_packet_parse_impl(const unsigned char *data, opus_int32 len,
{ {
if (len&0x1) if (len&0x1)
return OPUS_INVALID_PACKET; return OPUS_INVALID_PACKET;
size[0] = last_size = len/2; last_size = len/2;
/* If last_size doesn't fit in size[0], we'll catch it later */
size[0] = (short)last_size;
} }
break; break;
/* Two VBR frames */ /* Two VBR frames */
...@@ -676,7 +678,7 @@ static int opus_packet_parse_impl(const unsigned char *data, opus_int32 len, ...@@ -676,7 +678,7 @@ static int opus_packet_parse_impl(const unsigned char *data, opus_int32 len,
if (last_size*count!=len) if (last_size*count!=len)
return OPUS_INVALID_PACKET; return OPUS_INVALID_PACKET;
for (i=0;i<count-1;i++) for (i=0;i<count-1;i++)
size[i] = last_size; size[i] = (short)last_size;
} }
break; break;
} }
...@@ -704,7 +706,7 @@ static int opus_packet_parse_impl(const unsigned char *data, opus_int32 len, ...@@ -704,7 +706,7 @@ static int opus_packet_parse_impl(const unsigned char *data, opus_int32 len,
1275. Reject them here.*/ 1275. Reject them here.*/
if (last_size > 1275) if (last_size > 1275)
return OPUS_INVALID_PACKET; return OPUS_INVALID_PACKET;
size[count-1] = last_size; size[count-1] = (short)last_size;
} }
if (frames) if (frames)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment