{
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;
}
{
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
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;
}
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;
}
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];
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;
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)
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;
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;
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);
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);
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;
p += sizes[i];
}
*data = p;
- *length = sizes[item];
+ *length = (size_t)sizes[item];
} else {
*data = codec_private.data;
*length = codec_private.length;