]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
Input: ti_am335x_tsc - fix off-by-one error in wire_order validation
authorJunjie Cao <junjie.cao@intel.com>
Fri, 19 Dec 2025 05:56:59 +0000 (21:56 -0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 19 Jan 2026 12:09:45 +0000 (13:09 +0100)
commit 248d3a73a0167dce15ba100477c3e778c4787178 upstream.

The current validation 'wire_order[i] > ARRAY_SIZE(config_pins)' allows
wire_order[i] to equal ARRAY_SIZE(config_pins), which causes out-of-bounds
access when used as index in 'config_pins[wire_order[i]]'.

Since config_pins has 4 elements (indices 0-3), the valid range for
wire_order should be 0-3. Fix the off-by-one error by using >= instead
of > in the validation check.

Signed-off-by: Junjie Cao <junjie.cao@intel.com>
Link: https://patch.msgid.link/20251114062817.852698-1-junjie.cao@intel.com
Fixes: bb76dc09ddfc ("input: ti_am33x_tsc: Order of TSC wires, made configurable")
Cc: stable@vger.kernel.org
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/input/touchscreen/ti_am335x_tsc.c

index cfc943423241f5814a80325a6bdec2db774bd7d4..9d9339ea7dadc79e6d52037af195adaef3cbff08 100644 (file)
@@ -86,7 +86,7 @@ static int titsc_config_wires(struct titsc *ts_dev)
                wire_order[i] = ts_dev->config_inp[i] & 0x0F;
                if (WARN_ON(analog_line[i] > 7))
                        return -EINVAL;
-               if (WARN_ON(wire_order[i] > ARRAY_SIZE(config_pins)))
+               if (WARN_ON(wire_order[i] >= ARRAY_SIZE(config_pins)))
                        return -EINVAL;
        }