Fixes packet parsing for 16-bit CPUs master v1.3-rc2
authorJean-Marc Valin <jmvalin@jmvalin.ca>
Fri, 14 Sep 2018 20:27:03 +0000 (16:27 -0400)
committerJean-Marc Valin <jmvalin@jmvalin.ca>
Fri, 14 Sep 2018 20:27:03 +0000 (16:27 -0400)
Without that change, a very long (> 682 ms) illegal packet could trigger
a wrap-around in the test and be accepted as valid.

Only 16-bit architectures (e.g. TI C5x) were affected.

src/opus.c

index cdbd13a..538b5ea 100644 (file)
@@ -252,7 +252,7 @@ int opus_packet_parse_impl(const unsigned char *data, opus_int32 len,
       /* Number of frames encoded in bits 0 to 5 */
       ch = *data++;
       count = ch&0x3F;
-      if (count <= 0 || framesize*count > 5760)
+      if (count <= 0 || framesize*(opus_int32)count > 5760)
          return OPUS_INVALID_PACKET;
       len--;
       /* Padding flag is bit 6 */