jpegdec: Don't dereference NULL input state if we have no caps in TIME segments
authorSebastian Dröge <sebastian@centricular.com>
Thu, 25 Jul 2019 12:08:54 +0000 (15:08 +0300)
committerTim-Philipp Müller <tim@centricular.com>
Thu, 8 Aug 2019 12:31:11 +0000 (13:31 +0100)
Simply assume that the JPEG frame is not going to be interlaced instead
of crashing.

ext/jpeg/gstjpegdec.c

index d88b258..6c55229 100644 (file)
@@ -1250,6 +1250,7 @@ gst_jpeg_dec_handle_frame (GstVideoDecoder * bdec, GstVideoCodecFrame * frame)
   /* is it interlaced MJPEG? (we really don't want to scan the jpeg data
    * to see if there are two SOF markers in the packet to detect this) */
   if (gst_video_decoder_get_packetized (bdec) &&
+      dec->input_state &&
       dec->input_state->info.height > height &&
       dec->input_state->info.height <= (height * 2)
       && dec->input_state->info.width == width) {
@@ -1304,6 +1305,9 @@ gst_jpeg_dec_handle_frame (GstVideoDecoder * bdec, GstVideoCodecFrame * frame)
   if (num_fields == 2) {
     GstVideoFormat field2_format;
 
+    /* Checked above before setting num_fields to 2 */
+    g_assert (dec->input_state != NULL);
+
     /* skip any chunk or padding bytes before the next SOI marker; both fields
      * are in one single buffer here, so direct access should be fine here */
     while (dec->jsrc.pub.bytes_in_buffer > 2 &&