diff --git a/spa/plugins/libcamera/libcamera-source.cpp b/spa/plugins/libcamera/libcamera-source.cpp index 3eeecd4b6..069468ff1 100644 --- a/spa/plugins/libcamera/libcamera-source.cpp +++ b/spa/plugins/libcamera/libcamera-source.cpp @@ -744,6 +744,9 @@ uint32_t prop_id_to_control(uint32_t prop_id) spa_pod *control_details_to_pod(spa_pod_builder& b, const libcamera::ControlId& cid, const libcamera::ControlInfo& cinfo) { + if (cid.isArray()) + return nullptr; + auto id = control_to_prop_id(cid.id()); spa_pod_frame f; @@ -901,6 +904,9 @@ spa_libcamera_set_control(struct impl *impl, const struct spa_pod_prop *prop, co ctrl_id = v->second; + if (ctrl_id->isArray()) + return -EINVAL; + d.type = ctrl_id->type(); d.id = ctrl_id->id();