avformat/oggdec: Check for ost allocation failure
Fixes CID1257798 Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
parent
586ba24ff2
commit
40adcf576f
@ -68,6 +68,10 @@ static int ogg_save(AVFormatContext *s)
|
|||||||
struct ogg_state *ost =
|
struct ogg_state *ost =
|
||||||
av_malloc(sizeof(*ost) + (ogg->nstreams - 1) * sizeof(*ogg->streams));
|
av_malloc(sizeof(*ost) + (ogg->nstreams - 1) * sizeof(*ogg->streams));
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
if (!ost)
|
||||||
|
return AVERROR(ENOMEM);
|
||||||
|
|
||||||
ost->pos = avio_tell(s->pb);
|
ost->pos = avio_tell(s->pb);
|
||||||
ost->curidx = ogg->curidx;
|
ost->curidx = ogg->curidx;
|
||||||
ost->next = ogg->state;
|
ost->next = ogg->state;
|
||||||
@ -583,6 +587,7 @@ static int ogg_get_length(AVFormatContext *s)
|
|||||||
int i;
|
int i;
|
||||||
int64_t size, end;
|
int64_t size, end;
|
||||||
int streams_left=0;
|
int streams_left=0;
|
||||||
|
int ret;
|
||||||
|
|
||||||
if (!s->pb->seekable)
|
if (!s->pb->seekable)
|
||||||
return 0;
|
return 0;
|
||||||
@ -596,7 +601,9 @@ static int ogg_get_length(AVFormatContext *s)
|
|||||||
return 0;
|
return 0;
|
||||||
end = size > MAX_PAGE_SIZE ? size - MAX_PAGE_SIZE : 0;
|
end = size > MAX_PAGE_SIZE ? size - MAX_PAGE_SIZE : 0;
|
||||||
|
|
||||||
ogg_save(s);
|
ret = ogg_save(s);
|
||||||
|
if (ret < 0)
|
||||||
|
return ret;
|
||||||
avio_seek(s->pb, end, SEEK_SET);
|
avio_seek(s->pb, end, SEEK_SET);
|
||||||
ogg->page_pos = -1;
|
ogg->page_pos = -1;
|
||||||
|
|
||||||
@ -618,7 +625,10 @@ static int ogg_get_length(AVFormatContext *s)
|
|||||||
|
|
||||||
ogg_restore(s, 0);
|
ogg_restore(s, 0);
|
||||||
|
|
||||||
ogg_save (s);
|
ret = ogg_save(s);
|
||||||
|
if (ret < 0)
|
||||||
|
return ret;
|
||||||
|
|
||||||
avio_seek (s->pb, s->internal->data_offset, SEEK_SET);
|
avio_seek (s->pb, s->internal->data_offset, SEEK_SET);
|
||||||
ogg_reset(s);
|
ogg_reset(s);
|
||||||
while (streams_left > 0 && !ogg_packet(s, &i, NULL, NULL, NULL)) {
|
while (streams_left > 0 && !ogg_packet(s, &i, NULL, NULL, NULL)) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user