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