|
|
|
@@ -84,6 +84,9 @@ static int read_header(AVFormatContext *s) |
|
|
|
avio_skip(pb, 4); |
|
|
|
ico->nb_images = avio_rl16(pb); |
|
|
|
|
|
|
|
if (!ico->nb_images) |
|
|
|
return AVERROR_INVALIDDATA; |
|
|
|
|
|
|
|
ico->images = av_malloc_array(ico->nb_images, sizeof(IcoImage)); |
|
|
|
if (!ico->images) |
|
|
|
return AVERROR(ENOMEM); |
|
|
|
@@ -93,7 +96,7 @@ static int read_header(AVFormatContext *s) |
|
|
|
int tmp; |
|
|
|
|
|
|
|
if (avio_seek(pb, 6 + i * 16, SEEK_SET) < 0) |
|
|
|
break; |
|
|
|
goto fail; |
|
|
|
|
|
|
|
st = avformat_new_stream(s, NULL); |
|
|
|
if (!st) { |
|
|
|
@@ -118,7 +121,7 @@ static int read_header(AVFormatContext *s) |
|
|
|
ico->images[i].offset = avio_rl32(pb); |
|
|
|
|
|
|
|
if (avio_seek(pb, ico->images[i].offset, SEEK_SET) < 0) |
|
|
|
break; |
|
|
|
goto fail; |
|
|
|
|
|
|
|
codec = avio_rl32(pb); |
|
|
|
switch (codec) { |
|
|
|
|