Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d0559a2f authored by Ian Abbott's avatar Ian Abbott Committed by Johan Hovold
Browse files

USB: serial: ftdi_sio: only allow valid event_char values



The "event_char" device attribute value, when written, is interpreted as
an enable bit in bit 8, and an "event character" in bits 7 to 0.

Return an error -EINVAL for out-of-range values.  Use kstrtouint() to
parse the integer instead of the obsolete simple_strtoul().

Signed-off-by: default avatarIan Abbott <abbotti@mev.co.uk>
Signed-off-by: default avatarJohan Hovold <johan@kernel.org>
parent db924066
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -1738,9 +1738,12 @@ static ssize_t store_event_char(struct device *dev,
	struct usb_serial_port *port = to_usb_serial_port(dev);
	struct ftdi_private *priv = usb_get_serial_port_data(port);
	struct usb_device *udev = port->serial->dev;
	int v = simple_strtoul(valbuf, NULL, 10);
	unsigned int v;
	int rv;

	if (kstrtouint(valbuf, 10, &v) || v >= 0x200)
		return -EINVAL;

	dev_dbg(&port->dev, "%s: setting event char = %i\n", __func__, v);

	rv = usb_control_msg(udev,