Commit f927c5b7 authored by Michael Niedermayer's avatar Michael Niedermayer

vorbisdemux: Check private context in theoras gtopts.

This prevents a null ptr dereference.
It could be checked differently but this way it should
be possible to return some data.

Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: 's avatarMichael Niedermayer <michaelni@gmx.at>
parent ae2c33b0
......@@ -74,8 +74,11 @@ static int skeleton_header(AVFormatContext *s, int idx)
target_idx = ogg_find_stream(ogg, AV_RL32(buf+12));
start_granule = AV_RL64(buf+36);
if (target_idx >= 0 && start_granule != -1) {
int64_t pts = ogg_gptopts(s, target_idx, start_granule, NULL);
if (pts == AV_NOPTS_VALUE)
return -1;
ogg->streams[target_idx].lastpts =
s->streams[target_idx]->start_time = ogg_gptopts(s, target_idx, start_granule, NULL);
s->streams[target_idx]->start_time = pts;
}
}
......
......@@ -131,8 +131,13 @@ theora_gptopts(AVFormatContext *ctx, int idx, uint64_t gp, int64_t *dts)
struct ogg *ogg = ctx->priv_data;
struct ogg_stream *os = ogg->streams + idx;
struct theora_params *thp = os->private;
uint64_t iframe = gp >> thp->gpshift;
uint64_t pframe = gp & thp->gpmask;
uint64_t iframe, pframe;
if (!thp)
return AV_NOPTS_VALUE;
iframe = gp >> thp->gpshift;
pframe = gp & thp->gpmask;
if (thp->version < 0x030201)
iframe++;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment