Received: by 2002:a05:6a10:22f:0:0:0:0 with SMTP id 15csp3025305pxk; Mon, 21 Sep 2020 03:25:25 -0700 (PDT) X-Google-Smtp-Source: ABdhPJya85enAV3mso9cvViXx45H3l2S0VM3YUtlX6/P8AtC/5BgXBNr69EfVkI2jhbHf7NiCEIa X-Received: by 2002:a50:fe0a:: with SMTP id f10mr38916950edt.133.1600683925418; Mon, 21 Sep 2020 03:25:25 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1600683925; cv=none; d=google.com; s=arc-20160816; b=mjR2L/6S17jZwsU+TmqdoryzZJLt2KORuLNSqjLbGO5URb1vQcVQB7y/f8KkQPgNef VJyIrIR/o8nWAhbbwdgCL3g8Y+ttjmja6dJbDfGychdKMa3Cz1pZRUSw63huBDisQsac FjGmc/zNZwYnWH1Jr5wHGoiIxci8mtbKVy74IByv8fb+LtKBEy2p0/+fIhE9xC615eHY UCzfF7UeMJ1niq3/UloGBMKKbgqf7mm6t6p1tQzOqpErx5b7Gb7GO4zZCiKxbstZ8K4r 9AxQFWIS/9Wkc/RTn57CwuCHG+QPtZWuzi5VRQJD56+SEwvUP/6eWlZ+MXbZ0diZJ2vg UyGg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:references:in-reply-to:message-id:date:subject :cc:to:from:dkim-signature; bh=jZ72PUAOAY/v7UQdoKSs5wvFASOODli3K4iY5mQPSSc=; b=pMH523NA9rUjRB0/t4FIh77dGDfo1/LdqW/HGFdr5Wmj9B0RvVsCVn5eojVSTeUYk4 0GYkfzkHkTVC0PFwY9uIOOgcM64AvXjjG/aNibC0qWiLxuFLXKR3v+f9Lomjh/pikRL/ HuZrOSHu0bd5FbOJs47LeGEcAjh/bmhcCsm3jKhYj+YqNBNx3XiDsFMM+Ax/2V2uYMAS Hnu1w3qmg1Kjwjy/D9z8cwz9Q8pGQHAVek29XaVqZFlz1mibEASASmtWjqeGNL3An99E GHYiWjoED3t9o+5mKG9up4xPo4eivdXuNgE9836VAvPjanIQuenTx0ORNR6JhR0bWu+p QASw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@baylibre-com.20150623.gappssmtp.com header.s=20150623 header.b=JzNiLwHc; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id c24si8032610eja.263.2020.09.21.03.25.02; Mon, 21 Sep 2020 03:25:25 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@baylibre-com.20150623.gappssmtp.com header.s=20150623 header.b=JzNiLwHc; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727003AbgIUKVN (ORCPT + 99 others); Mon, 21 Sep 2020 06:21:13 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59186 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726969AbgIUKVJ (ORCPT ); Mon, 21 Sep 2020 06:21:09 -0400 Received: from mail-wm1-x344.google.com (mail-wm1-x344.google.com [IPv6:2a00:1450:4864:20::344]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C596EC0613D3 for ; Mon, 21 Sep 2020 03:21:07 -0700 (PDT) Received: by mail-wm1-x344.google.com with SMTP id d4so11562665wmd.5 for ; Mon, 21 Sep 2020 03:21:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=jZ72PUAOAY/v7UQdoKSs5wvFASOODli3K4iY5mQPSSc=; b=JzNiLwHcQymY9+D/8+E4uv3VRe59dhgHJ1I8p9xqMKjrsJVLWChfAftBdMYaX/YAz1 fkM9a1DXMC7+keldbhrkRFeGSLWb/FiMr2vpJvweYAJJuH5EZbY4nFU1KtcmCP/S7CDW hVzfBX9rGmO43vL6nDTmBwTZTQHkQ3DhdgWQQ6KadYIZT/ohDGARClZ2tTmWJdeei9Gf tfXsZ1XmRQC6gMZPu2dDt6vUBPc6DwLSSr2G9PHReMknSJmiXBPScSsmdaJWUhUcREjv yNEHAFFLVSuYW6OJDbwxxEfcqIlmtwRZEiFE1+jX19/NpTzXCsrFi+7X8k4QCKa6ZC8K aiDA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=jZ72PUAOAY/v7UQdoKSs5wvFASOODli3K4iY5mQPSSc=; b=ZwDS0vpEXeQkn9y6hVN7s60uhXhmjQ8fEzXSThJVsjpYQgSgP/eKdOAhfUoNDOuAu/ T1A+W93xMikpJmmVNe6Lxe1U/Db716pXHc4p89A5mVzE86ykI+F4jFEiwQhDFKKgnMXo GWszZqnM5PIFr4pi+Chr4mDj3nsdDPUiyIVJopokqgaXWdYcKB0cDXnEw2tcBRGN3NWQ lffTqLYeTH3Qkj1Ls762fwRj1LhdLmyn0RZA3kF5WJ1RcOsuSiWFVLAka/EOMVEBhLev mJC/FBRhDLtisIZ3hwCfdJLz6PtVFphSbqVxLr37lWt5u6fDZbZL4j4jzOLup5eBRVUP GRcw== X-Gm-Message-State: AOAM533G2FxqJZHUwoPLWSjzGxhGr1pETD++YULtSUihBznNWCOj+ryL 1LzyMmLTwewnX/RoQdcf6RsiPg== X-Received: by 2002:a1c:7d55:: with SMTP id y82mr29496041wmc.100.1600683666523; Mon, 21 Sep 2020 03:21:06 -0700 (PDT) Received: from localhost.localdomain ([51.15.160.169]) by smtp.googlemail.com with ESMTPSA id l17sm18804629wme.11.2020.09.21.03.21.05 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 21 Sep 2020 03:21:05 -0700 (PDT) From: Corentin Labbe To: gregkh@linuxfoundation.org, laurent.pinchart@skynet.be, mchehab@kernel.org Cc: devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, Corentin Labbe Subject: [PATCH RFT/RFC 36/49] staging: media: zoran: Add more check for compliance Date: Mon, 21 Sep 2020 10:20:11 +0000 Message-Id: <1600683624-5863-37-git-send-email-clabbe@baylibre.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1600683624-5863-1-git-send-email-clabbe@baylibre.com> References: <1600683624-5863-1-git-send-email-clabbe@baylibre.com> Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The zoran driver miss some sanity checks, and this made v4l compliance happy. Signed-off-by: Corentin Labbe --- drivers/staging/media/zoran/zoran_driver.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/drivers/staging/media/zoran/zoran_driver.c b/drivers/staging/media/zoran/zoran_driver.c index 6e95fbf5c7ea..a326c0a16e0c 100644 --- a/drivers/staging/media/zoran/zoran_driver.c +++ b/drivers/staging/media/zoran/zoran_driver.c @@ -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, sizeof(fmt->description)); @@ -1244,6 +1249,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); @@ -1271,6 +1282,9 @@ static int zoran_s_fmt_vid_out(struct file *file, void *__fh, struct v4l2_format 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 */ @@ -1856,6 +1870,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; -- 2.26.2