pnmdec: Return early on ::finish() if we have no actual data to parse
authorSebastian Dröge <sebastian@centricular.com>
Tue, 22 Oct 2019 06:30:34 +0000 (09:30 +0300)
committerTim-Philipp Müller <tim@centricular.com>
Thu, 24 Oct 2019 12:01:50 +0000 (13:01 +0100)
Otherwise we'd be working with a NULL buffer and cause various critical
warnings along the way.

Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/1104

gst/pnm/gstpnmdec.c

index 5b624be..cf6904e 100644 (file)
@@ -244,6 +244,9 @@ gst_pnmdec_parse_ascii (GstPnmdec * s, const guint8 * b, guint bs)
   GstMapInfo map;
   guint8 *outdata;
 
+  if (!s->buf)
+    return GST_FLOW_OK;
+
   target = s->size - s->current_size;
 
   gst_buffer_map (s->buf, &map, GST_MAP_WRITE);
@@ -571,7 +574,7 @@ gst_pnmdec_finish (GstVideoDecoder * decoder)
   if (s->mngr.info.encoding == GST_PNM_ENCODING_ASCII) {
     /* One last go at outputting any final value */
     gst_pnmdec_parse_ascii (s, 0, 0);
-    if (s->size <= s->current_size) {
+    if (s->size && s->size <= s->current_size) {
       return gst_video_decoder_have_frame (decoder);
     }
   }