avimux: don't crash if we never got audio caps before stopping
authorMichael Olbrich <m.olbrich@pengutronix.de>
Wed, 18 Nov 2015 15:10:11 +0000 (16:10 +0100)
committerSebastian Dröge <sebastian@centricular.com>
Tue, 1 Dec 2015 18:10:19 +0000 (20:10 +0200)
auds.blockalign is set once the first caps arrive. If
gst_avi_mux_stop_file() is called before this happens then auds.blockalign
is zero and gst_avi_mux_audsink_set_fields() cause a crash:
[...]
avipad->parent.hdr.rate = avipad->auds.av_bps / avipad->auds.blockalign;
[...]

https://bugzilla.gnome.org/show_bug.cgi?id=758912

gst/avi/gstavimux.c

index 2ef3d3e..ddfac13 100644 (file)
@@ -1824,6 +1824,8 @@ gst_avi_mux_stop_file (GstAviMux * avimux)
       /* housekeeping for vbr case */
       if (audpad->max_audio_chunk)
         audpad->auds.blockalign = audpad->max_audio_chunk;
+      if (audpad->auds.blockalign == 0)
+        audpad->auds.blockalign = 1;
       gst_avi_mux_audsink_set_fields (avimux, audpad);
       avimux->avi_hdr.max_bps += audpad->auds.av_bps;
       avipad->hdr.length = gst_util_uint64_scale (audpad->audio_time,