mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
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: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
parent
ae2c33b0c2
commit
f927c5b753
@ -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++;
|
||||
|
Loading…
Reference in New Issue
Block a user