diff options
author | Jacopo Mondi <jacopo@jmondi.org> | 2022-11-18 17:14:14 +0100 |
---|---|---|
committer | Jacopo Mondi <jacopo@jmondi.org> | 2022-11-21 14:54:26 +0100 |
commit | e228a5b7f4090a8e0598e9bcff006aaa0f5c0786 (patch) | |
tree | 0aeb109eeed0ab988926968adfbbd011025a802c | |
parent | 40f338be671cb087b0cd7e223aa6100df908128c (diff) |
gstreamer: Do not lookup controls by id
The libcamerasrc element looks for the availability of the
FrameDurationLimits control by looking it up by numeric control id.
The ControlinfoMap::find(unsigned int i) function searches the control
numerical identifier on the ContorlInfoMap::idMap_ class member, which
might be not initialized if the pipeline handler does not register
any control, causing an invalid memory access.
Avoid looking up the control by numerical id and use the ControlId
instance instead to prevent that.
Fixes: ccfe0a1af77c ("gstreamer: Provide framerate support for libcamerasrc")
Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>
Reviewed-by: Umang Jain <umang.jain@ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
-rw-r--r-- | src/gstreamer/gstlibcamera-utils.cpp | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/gstreamer/gstlibcamera-utils.cpp b/src/gstreamer/gstlibcamera-utils.cpp index 64d19701..36b9564c 100644 --- a/src/gstreamer/gstlibcamera-utils.cpp +++ b/src/gstreamer/gstlibcamera-utils.cpp @@ -436,7 +436,7 @@ void gst_libcamera_clamp_and_set_frameduration(ControlList &initCtrls, if (!gst_structure_has_field_typed(element_caps, "framerate", GST_TYPE_FRACTION)) return; - auto iterFrameDuration = cam_ctrls.find(controls::FrameDurationLimits.id()); + auto iterFrameDuration = cam_ctrls.find(&controls::FrameDurationLimits); if (iterFrameDuration == cam_ctrls.end()) { GST_WARNING("FrameDurationLimits not found in camera controls."); return; |