mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-10 13:59:45 -04:00
media: zoran: Add more check for compliance
The zoran driver miss some sanity checks, and this made v4l compliance happy. Signed-off-by: Corentin Labbe <clabbe@baylibre.com> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl> Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
This commit is contained in:
committed by
Mauro Carvalho Chehab
parent
d61c7451fc
commit
1c3629cba0
@@ -1092,6 +1092,11 @@ static int zoran_enum_fmt(struct zoran *zr, struct v4l2_fmtdesc *fmt, int flag)
|
||||
{
|
||||
unsigned int num, i;
|
||||
|
||||
if (fmt->index >= ARRAY_SIZE(zoran_formats))
|
||||
return -EINVAL;
|
||||
if (fmt->type != V4L2_BUF_TYPE_VIDEO_CAPTURE)
|
||||
return -EINVAL;
|
||||
|
||||
for (num = i = 0; i < NUM_FORMATS; i++) {
|
||||
if (zoran_formats[i].flags & flag && num++ == fmt->index) {
|
||||
strscpy(fmt->description, zoran_formats[i].name,
|
||||
@@ -1255,6 +1260,12 @@ static int zoran_try_fmt_vid_cap(struct file *file, void *__fh,
|
||||
if (i == NUM_FORMATS)
|
||||
return -EINVAL;
|
||||
|
||||
fmt->fmt.pix.colorspace = zoran_formats[i].colorspace;
|
||||
if (BUZ_MAX_HEIGHT < (fmt->fmt.pix.height * 2))
|
||||
fmt->fmt.pix.field = V4L2_FIELD_INTERLACED;
|
||||
else
|
||||
fmt->fmt.pix.field = V4L2_FIELD_TOP;
|
||||
|
||||
bpp = DIV_ROUND_UP(zoran_formats[i].depth, 8);
|
||||
v4l_bound_align_image(&fmt->fmt.pix.width, BUZ_MIN_WIDTH, BUZ_MAX_WIDTH, bpp == 2 ? 1 : 2,
|
||||
&fmt->fmt.pix.height, BUZ_MIN_HEIGHT, BUZ_MAX_HEIGHT, 0, 0);
|
||||
@@ -1283,6 +1294,9 @@ static int zoran_s_fmt_vid_out(struct file *file, void *__fh,
|
||||
return res;
|
||||
}
|
||||
|
||||
if (!fmt->fmt.pix.height || !fmt->fmt.pix.width)
|
||||
return -EINVAL;
|
||||
|
||||
settings = zr->jpg_settings;
|
||||
|
||||
/* we actually need to set 'real' parameters now */
|
||||
@@ -1872,6 +1886,9 @@ static int zoran_s_selection(struct file *file, void *__fh, struct v4l2_selectio
|
||||
sel->type != V4L2_BUF_TYPE_VIDEO_CAPTURE)
|
||||
return -EINVAL;
|
||||
|
||||
if (!sel->r.width || !sel->r.height)
|
||||
return -EINVAL;
|
||||
|
||||
if (sel->target != V4L2_SEL_TGT_CROP)
|
||||
return -EINVAL;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user