Index: source/libvpx/third_party/nestegg/src/nestegg.c |
=================================================================== |
--- source/libvpx/third_party/nestegg/src/nestegg.c (revision 263011) |
+++ source/libvpx/third_party/nestegg/src/nestegg.c (working copy) |
@@ -694,14 +694,15 @@ |
{ |
char * str; |
int r; |
+ const size_t alloc_size = (size_t)length + 1; |
if (length == 0 || length > LIMIT_STRING) |
return -1; |
- str = ne_pool_alloc(length + 1, ctx->alloc_pool); |
- r = ne_io_read(ctx->io, (unsigned char *) str, length); |
+ str = ne_pool_alloc(alloc_size, ctx->alloc_pool); |
+ r = ne_io_read(ctx->io, (unsigned char *) str, alloc_size - 1); |
if (r != 1) |
return r; |
- str[length] = '\0'; |
+ str[alloc_size - 1] = '\0'; |
*val = str; |
return 1; |
} |
@@ -711,9 +712,9 @@ |
{ |
if (length == 0 || length > LIMIT_BINARY) |
return -1; |
- val->data = ne_pool_alloc(length, ctx->alloc_pool); |
- val->length = length; |
- return ne_io_read(ctx->io, val->data, length); |
+ val->length = (size_t)length; |
+ val->data = ne_pool_alloc(val->length, ctx->alloc_pool); |
+ return ne_io_read(ctx->io, val->data, val->length); |
} |
static int |
@@ -1043,7 +1044,7 @@ |
ne_read_single_master(ctx, element); |
continue; |
} else { |
- r = ne_read_simple(ctx, element, size); |
+ r = ne_read_simple(ctx, element, (size_t)size); |
if (r < 0) |
break; |
} |
@@ -1062,7 +1063,7 @@ |
if (id != ID_VOID && id != ID_CRC32) |
ctx->log(ctx, NESTEGG_LOG_DEBUG, "unknown element %llx", id); |
- r = ne_io_read_skip(ctx->io, size); |
+ r = ne_io_read_skip(ctx->io, (size_t)size); |
if (r != 1) |
break; |
} |
@@ -1151,7 +1152,8 @@ |
r = ne_read_vint(io, &lace, &length); |
if (r != 1) |
return r; |
- *read += length; |
+ assert(length <= 8); |
+ *read += (size_t)length; |
sizes[i] = lace; |
sum = sizes[i]; |
@@ -1163,7 +1165,8 @@ |
r = ne_read_svint(io, &slace, &length); |
if (r != 1) |
return r; |
- *read += length; |
+ assert(length <= 8); |
+ *read += (size_t)length; |
sizes[i] = sizes[i - 1] + slace; |
sum += sizes[i]; |
i += 1; |
@@ -1263,7 +1266,8 @@ |
if (track_number == 0 || (unsigned int)track_number != track_number) |
return -1; |
- consumed += length; |
+ assert(length <= 8); |
+ consumed += (size_t)length; |
r = ne_read_int(ctx->io, &timecode, 2); |
if (r != 1) |
@@ -1307,7 +1311,7 @@ |
case LACING_XIPH: |
if (frames == 1) |
return -1; |
- r = ne_read_xiph_lacing(ctx->io, block_size, &consumed, frames, frame_sizes); |
+ r = ne_read_xiph_lacing(ctx->io, (size_t)block_size, &consumed, frames, frame_sizes); |
if (r != 1) |
return r; |
break; |
@@ -1320,7 +1324,7 @@ |
case LACING_EBML: |
if (frames == 1) |
return -1; |
- r = ne_read_ebml_lacing(ctx->io, block_size, &consumed, frames, frame_sizes); |
+ r = ne_read_ebml_lacing(ctx->io, (size_t)block_size, &consumed, frames, frame_sizes); |
if (r != 1) |
return r; |
break; |
@@ -1365,9 +1369,9 @@ |
return -1; |
} |
f = ne_alloc(sizeof(*f)); |
- f->data = ne_alloc(frame_sizes[i]); |
- f->length = frame_sizes[i]; |
- r = ne_io_read(ctx->io, f->data, frame_sizes[i]); |
+ f->length = (size_t)frame_sizes[i]; |
+ f->data = ne_alloc(f->length); |
+ r = ne_io_read(ctx->io, f->data, f->length); |
if (r != 1) { |
free(f->data); |
free(f); |
@@ -1406,7 +1410,8 @@ |
if (!element) |
return 1; |
- r = ne_read_simple(ctx, element, size); |
+ assert((size_t)size == size); |
+ r = ne_read_simple(ctx, element, (size_t)size); |
if (r != 1) |
return r; |
storage = (struct ebml_type *) (ctx->ancestor->data + element->offset); |
@@ -1600,7 +1605,7 @@ |
struct sniff_buffer * sb = user_data; |
int rv = 1; |
- size_t available = sb->length - sb->offset; |
+ size_t available = sb->length - (size_t)sb->offset; |
if (available < length) |
return 0; |
@@ -2074,7 +2079,7 @@ |
p += sizes[i]; |
} |
*data = p; |
- *length = sizes[item]; |
+ *length = (size_t)sizes[item]; |
} else { |
*data = codec_private.data; |
*length = codec_private.length; |