| 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;
|
|
|