From 520dda092a0c6aaf749bca32499ee38220cc8812 Mon Sep 17 00:00:00 2001 From: Nicolas Dufresne Date: Sat, 7 Dec 2013 10:31:15 -0500 Subject: [PATCH] v4l2object: Validate returned dimensions https://bugzilla.gnome.org/show_bug.cgi?id=720568 --- sys/v4l2/gstv4l2object.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/sys/v4l2/gstv4l2object.c b/sys/v4l2/gstv4l2object.c index e605419a21..572ad9eb61 100644 --- a/sys/v4l2/gstv4l2object.c +++ b/sys/v4l2/gstv4l2object.c @@ -2919,6 +2919,9 @@ gst_v4l2_object_setup_format (GstV4l2Object * v4l2object, if (v4l2_ioctl (v4l2object->video_fd, VIDIOC_G_FMT, &fmt) < 0) goto get_fmt_failed; + if (fmt.fmt.pix.width == 0 || fmt.fmt.pix.height == 0) + goto invalid_dimensions; + fmtdesc = gst_v4l2_object_get_format_from_fourcc (v4l2object, fmt.fmt.pix.pixelformat); if (fmtdesc == NULL) @@ -2968,6 +2971,14 @@ get_fmt_failed: (_("Video device did not provide output format.")), GST_ERROR_SYSTEM); return FALSE; } +invalid_dimensions: + { + GST_ELEMENT_WARNING (v4l2object->element, RESOURCE, SETTINGS, + (_("Video device returned invalid dimensions.")), + ("Expected non 0 dimensions, got %dx%d", fmt.fmt.pix.width, + fmt.fmt.pix.height)); + return FALSE; + } unsupported_field: { GST_ELEMENT_ERROR (v4l2object->element, RESOURCE, SETTINGS,