nestegg: ne_read_(string|binary|block): normalize size_t usage

+ nestegg_track_codec_data
quiets uint64_t -> size_t warnings
the sizes used are previously validated against their associated LIMIT_*
values

Change-Id: Ie574a3a7496d0143bd58b778145c27f38dd6a4da
This commit is contained in:
James Zern 2014-03-03 18:39:43 -08:00
parent be647f7b83
commit 483ebc30bc
2 changed files with 16 additions and 13 deletions

View File

@ -18,3 +18,4 @@ nestegg.c|975 col 6| warning: r may be used uninitialized in this function
- fix track_number uint64->uint32 warnings
- fix track_scale double->uint64 warning
- nestegg_packet_track: fix uint64->uint32 warning
- ne_read_(string|binary|block): normalize size_t usage

View File

@ -694,14 +694,15 @@ ne_read_string(nestegg * ctx, char ** val, uint64_t length)
{
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 @@ ne_read_binary(nestegg * ctx, struct ebml_binary * val, uint64_t length)
{
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
@ -1263,7 +1264,8 @@ ne_read_block(nestegg * ctx, uint64_t block_id, uint64_t block_size, nestegg_pac
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 +1309,7 @@ ne_read_block(nestegg * ctx, uint64_t block_id, uint64_t block_size, nestegg_pac
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 +1322,7 @@ ne_read_block(nestegg * ctx, uint64_t block_id, uint64_t block_size, nestegg_pac
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 +1367,9 @@ ne_read_block(nestegg * ctx, uint64_t block_id, uint64_t block_size, nestegg_pac
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);
@ -2074,7 +2076,7 @@ nestegg_track_codec_data(nestegg * ctx, unsigned int track, unsigned int item,
p += sizes[i];
}
*data = p;
*length = sizes[item];
*length = (size_t)sizes[item];
} else {
*data = codec_private.data;
*length = codec_private.length;