ref: d12f4d30cf0a5056d51ce795a5a9aabb65693eda
parent: cfe03293f7bc7ac036fb1c4a7ea4d6349569ea01
author: Timothy B. Terriberry <[email protected]>
date: Sun Dec 6 10:22:10 EST 2015
Better overflow check for serialno allocation.
--- a/src/opusfile.c
+++ b/src/opusfile.c
@@ -237,7 +237,9 @@
nserialnos=*_nserialnos;
cserialnos=*_cserialnos;
if(OP_UNLIKELY(nserialnos>=cserialnos)){
- if(OP_UNLIKELY(cserialnos>INT_MAX-1>>1))return OP_EFAULT;
+ if(OP_UNLIKELY(cserialnos>INT_MAX/(int)sizeof(*serialnos)-1>>1)){
+ return OP_EFAULT;
+ }
cserialnos=2*cserialnos+1;
OP_ASSERT(nserialnos<cserialnos);
serialnos=(ogg_uint32_t *)_ogg_realloc(serialnos,