|
|
|
@@ -314,7 +314,9 @@ static int nsv_parse_NSVf_header(AVFormatContext *s) |
|
|
|
char *token, *value; |
|
|
|
char quote; |
|
|
|
|
|
|
|
p = strings = av_mallocz(strings_size + 1); |
|
|
|
p = strings = av_mallocz((size_t)strings_size + 1); |
|
|
|
if (!p) |
|
|
|
return AVERROR(ENOMEM); |
|
|
|
endp = strings + strings_size; |
|
|
|
avio_read(pb, strings, strings_size); |
|
|
|
while (p < endp) { |
|
|
|
@@ -349,6 +351,8 @@ static int nsv_parse_NSVf_header(AVFormatContext *s) |
|
|
|
if((unsigned)table_entries_used >= UINT_MAX / sizeof(uint32_t)) |
|
|
|
return -1; |
|
|
|
nsv->nsvs_file_offset = av_malloc((unsigned)table_entries_used * sizeof(uint32_t)); |
|
|
|
if (!nsv->nsvs_file_offset) |
|
|
|
return AVERROR(ENOMEM); |
|
|
|
|
|
|
|
for(i=0;i<table_entries_used;i++) |
|
|
|
nsv->nsvs_file_offset[i] = avio_rl32(pb) + size; |
|
|
|
@@ -356,6 +360,8 @@ static int nsv_parse_NSVf_header(AVFormatContext *s) |
|
|
|
if(table_entries > table_entries_used && |
|
|
|
avio_rl32(pb) == MKTAG('T','O','C','2')) { |
|
|
|
nsv->nsvs_timestamps = av_malloc((unsigned)table_entries_used*sizeof(uint32_t)); |
|
|
|
if (!nsv->nsvs_timestamps) |
|
|
|
return AVERROR(ENOMEM); |
|
|
|
for(i=0;i<table_entries_used;i++) { |
|
|
|
nsv->nsvs_timestamps[i] = avio_rl32(pb); |
|
|
|
} |
|
|
|
|