From: ekwange Date: Tue, 30 May 2023 08:52:34 +0000 (+0900) Subject: v4l2: Change to query only up to V4L2_CID_PRIVATE_BASE+V4L2_CID_MAX_CTRLS X-Git-Tag: 1.22.7~216 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=cccf28fec19e970203056650c3d6adb431108182;p=platform%2Fupstream%2Fgstreamer.git v4l2: Change to query only up to V4L2_CID_PRIVATE_BASE+V4L2_CID_MAX_CTRLS Fix to prevent infinite querying. There are devices that exceed V4L2_CID_PRIVATE_BASE+V4L2_CID_MAX_CTRLS but do not return EINVAL. Part-of: --- diff --git a/subprojects/gst-plugins-good/sys/v4l2/v4l2_calls.c b/subprojects/gst-plugins-good/sys/v4l2/v4l2_calls.c index cb37ea7..6243d09 100644 --- a/subprojects/gst-plugins-good/sys/v4l2/v4l2_calls.c +++ b/subprojects/gst-plugins-good/sys/v4l2/v4l2_calls.c @@ -307,6 +307,10 @@ gst_v4l2_fill_lists (GstV4l2Object * v4l2object) } else { GST_WARNING_OBJECT (e, "Failed querying control %d on device '%s'. " "(%d - %s)", n, v4l2object->videodev, errno, strerror (errno)); + if (n > (V4L2_CID_PRIVATE_BASE + V4L2_CID_MAX_CTRLS)) { + GST_DEBUG_OBJECT (e, "Finish control by reaching V4L2_CID_MAX_CTRLS"); + break; + } continue; } }