From ec1cbed9b04d3450486a73e0817e9f7b571893ac Mon Sep 17 00:00:00 2001 From: Xiang Xiao Date: Mon, 5 Dec 2022 14:15:07 +0800 Subject: [PATCH] drivers/video: Zero all fields in an output struct and don't zero fields which is used as input Signed-off-by: Xiang Xiao --- drivers/video/video.c | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/drivers/video/video.c b/drivers/video/video.c index d68e44a18c..c0d029390a 100644 --- a/drivers/video/video.c +++ b/drivers/video/video.c @@ -1139,12 +1139,20 @@ static int video_enum_input(FAR struct v4l2_input *input) { FAR const char *name; + ASSERT(g_video_sensor_ops); + if (input->index > 0) { return -EINVAL; } + if (g_video_sensor_ops->get_driver_name == NULL) + { + return -ENOTTY; + } + name = g_video_sensor_ops->get_driver_name(); + memset(input, 0, sizeof(struct v4l2_input)); strlcpy((FAR char *)input->name, name, sizeof(input->name)); input->type = V4L2_INPUT_TYPE_CAMERA; @@ -1678,7 +1686,7 @@ static int video_g_fmt(FAR struct video_mng_s *priv, return -EINVAL; } - memset(fmt, 0, sizeof(*fmt)); + memset(&fmt->fmt, 0, sizeof(fmt->fmt)); fmt->fmt.pix.width = type_inf->fmt[VIDEO_FMT_MAIN].width; fmt->fmt.pix.height = type_inf->fmt[VIDEO_FMT_MAIN].height; fmt->fmt.pix.pixelformat = type_inf->fmt[VIDEO_FMT_MAIN].pixelformat; @@ -1788,6 +1796,8 @@ static int video_g_parm(FAR struct video_mng_s *vmng, return -EINVAL; } + memset(&parm->parm, 0, sizeof(parm->parm)); + if ((type_inf->state == VIDEO_STATE_CAPTURE) && (g_video_sensor_ops->get_frame_interval != NULL)) { @@ -1795,8 +1805,6 @@ static int video_g_parm(FAR struct video_mng_s *vmng, * query lower driver. */ - memset(&parm->parm, 0, sizeof(parm->parm)); - ret = g_video_sensor_ops->get_frame_interval (parm->type, (imgsensor_interval_t *)&parm->parm.capture.timeperframe); @@ -2122,6 +2130,11 @@ static int video_query_ext_ctrl(FAR struct v4l2_query_ext_ctrl *attr) return -EINVAL; } + attr->flags = 0; + attr->elem_size = 0; + attr->nr_of_dims = 0; + memset(attr->dims, 0, sizeof(attr->dims)); + if ((attr->ctrl_class == V4L2_CTRL_CLASS_CAMERA) && (attr->id == V4L2_CID_SCENE_MODE)) {