Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp5104804pxb; Mon, 15 Feb 2021 09:34:38 -0800 (PST) X-Google-Smtp-Source: ABdhPJw62EyXXPcm+lVOmG9uCtnAfBOho5qH0HnrCLcRsN1+uOcN3EWSDcPqOdrbnpRH8Kwl3CWi X-Received: by 2002:a05:6402:3508:: with SMTP id b8mr16829449edd.341.1613410477821; Mon, 15 Feb 2021 09:34:37 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1613410477; cv=none; d=google.com; s=arc-20160816; b=RvU6NBurNS5bcgUjnPjRzEGnIzLn0bTRaLtWmpnltSzL/+XF8WYON/Zv4GqrQvreKD Tow6BkigJy2Uv28A/s7RPl7zoNNza4XDmv2LEs6ZZ/RHNB6wyYN9pqhS1k9poQUQ7104 2XZc9Mvq4gWFeY7S3Dz0EttZaFojGuooNgfs3eLOO/YPdnz54wxEjn2P4lSTa1A5yZIa i1sOWfxBqnHMMrCQtmqnP6hu0f0QqMK6uQ7KFTeGLFPUcz19lz4yr13aoBMhJ7qqd627 jaIvnQvCunjv1mxAtjFM3jXwHnqeyYaXC9T0NRkXIvnufC2KlfS4NpdsyWw2c9xNgJ5A 7oVg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from; bh=Ug8GvBBSxDQmigHAVrNkbCmq3XsWiIn2P40581Ca9sU=; b=IRX00REPLBKIoedeKuPpwLfvOIooJGgfoUypAH2qOgOA7jqoLbdlBV/YHcMY6kejaO S6LyaV2s0D4I/2qN3Bb+RFJoHAA/hPcePU0QigC2yK8oAmU3NAnn9nSXQ+Q3i5tJevhN 2oY9M76/JV0ZUy+smWJfnAWPeTmG48MjsRcEeFHFpfyGCO0Oy8tN3+IM97+/U2cTZxN/ mHIzeI+wFc33+cLRtyaFPd01a5mCjdVQKxkQXEwuiU74lPKuXGWhQl1vXBYVczn+LMfv 6AsYPe6wrk8q5tOg9m19y7bBx0I8I1UCBuP0STsY+6GzE7m8lbcvL/BUISrrDJrsMe4d E6oA== ARC-Authentication-Results: i=1; mx.google.com; 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=canonical.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id f19si12260306edw.370.2021.02.15.09.34.15; Mon, 15 Feb 2021 09:34:37 -0800 (PST) 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; 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=canonical.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232785AbhBORdd (ORCPT + 99 others); Mon, 15 Feb 2021 12:33:33 -0500 Received: from youngberry.canonical.com ([91.189.89.112]:53128 "EHLO youngberry.canonical.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231750AbhBOQkL (ORCPT ); Mon, 15 Feb 2021 11:40:11 -0500 Received: from 1.general.cking.uk.vpn ([10.172.193.212] helo=localhost) by youngberry.canonical.com with esmtpsa (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1lBguA-0000kD-2y; Mon, 15 Feb 2021 16:39:22 +0000 From: Colin King To: Roderick Colenbrander , Jiri Kosina , Benjamin Tissoires , =?UTF-8?q?Barnab=C3=A1s=20P=C5=91cze?= , linux-input@vger.kernel.org Cc: kernel-janitors@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH][next] HID: playstation: fix array size comparison (off-by-one) Date: Mon, 15 Feb 2021 16:39:21 +0000 Message-Id: <20210215163921.84283-1-colin.king@canonical.com> X-Mailer: git-send-email 2.30.0 MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Colin Ian King The comparison of value with the array size ps_gamepad_hat_mapping appears to be off-by-one. Fix this by using >= rather than > for the size comparison. Addresses-Coverity: ("Out-of-bounds read") Fixes: bc2e15a9a022 ("HID: playstation: initial DualSense USB support.") Signed-off-by: Colin Ian King --- drivers/hid/hid-playstation.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/hid/hid-playstation.c b/drivers/hid/hid-playstation.c index 408b651174cf..568a3a067c88 100644 --- a/drivers/hid/hid-playstation.c +++ b/drivers/hid/hid-playstation.c @@ -1064,7 +1064,7 @@ static int dualsense_parse_report(struct ps_device *ps_dev, struct hid_report *r input_report_abs(ds->gamepad, ABS_RZ, ds_report->rz); value = ds_report->buttons[0] & DS_BUTTONS0_HAT_SWITCH; - if (value > ARRAY_SIZE(ps_gamepad_hat_mapping)) + if (value >= ARRAY_SIZE(ps_gamepad_hat_mapping)) value = 8; /* center */ input_report_abs(ds->gamepad, ABS_HAT0X, ps_gamepad_hat_mapping[value].x); input_report_abs(ds->gamepad, ABS_HAT0Y, ps_gamepad_hat_mapping[value].y); -- 2.30.0