directshow: Validate enumerated AM_MEDIA_TYPE struct
authorSeungha Yang <seungha@centricular.com>
Fri, 4 Nov 2022 09:32:05 +0000 (18:32 +0900)
committerGStreamer Marge Bot <gitlab-merge-bot@gstreamer-foundation.org>
Fri, 4 Nov 2022 10:01:39 +0000 (10:01 +0000)
The video info struct can be null if format is undefined

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3323>

subprojects/gst-plugins-bad/sys/directshow/gstdshow.cpp

index 8d0ddf7..2980027 100644 (file)
@@ -97,7 +97,15 @@ gst_dshow_new_pin_mediatype_from_enum_mediatypes (IPin * pin, IEnumMediaTypes *e
     return NULL;
   }
 
+  /* FORMAT_None or GUID_NULL format type does hold format data */
+  if (pin_mediatype->mediatype->formattype == FORMAT_None ||
+      pin_mediatype->mediatype->formattype == GUID_NULL) {
+    return NULL;
+  }
+
   video_info = (VIDEOINFOHEADER *) pin_mediatype->mediatype->pbFormat;
+  if (!video_info)
+    return NULL;
 
   pin_mediatype->defaultWidth = video_info->bmiHeader.biWidth;
   pin_mediatype->defaultHeight = video_info->bmiHeader.biHeight;