diff --git a/ChangeLog b/ChangeLog index b720cd3409..ef08417bbf 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2007-01-23 Tim-Philipp Müller + + * ext/ogg/gstoggdemux.c: (gst_ogg_demux_read_chain): + Error out properly if we get an error from libogg while reading the + BOS page(s). Fixes crash parsing 'fuzzed' ogg file (#399340). + 2007-01-23 Tim-Philipp Müller * gst/playback/gstdecodebin2.c: (gst_decode_bin_finalize): diff --git a/ext/ogg/gstoggdemux.c b/ext/ogg/gstoggdemux.c index 3c31a779ad..55a0331558 100644 --- a/ext/ogg/gstoggdemux.c +++ b/ext/ogg/gstoggdemux.c @@ -2269,7 +2269,16 @@ gst_ogg_demux_read_chain (GstOggDemux * ogg) gint ret; ret = gst_ogg_demux_get_next_page (ogg, &op, -1); - if (ret < 0 || !ogg_page_bos (&op)) + if (ret < 0) { + GST_WARNING_OBJECT (ogg, "problem reading BOS page: ret=%d", ret); + if (chain) { + gst_ogg_chain_free (chain); + chain = NULL; + } + break; + } + + if (!ogg_page_bos (&op)) break; if (chain == NULL) {