]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
USB: serial: ftdi_sio: only allow valid event_char values
authorIan Abbott <abbotti@mev.co.uk>
Wed, 8 Mar 2017 16:03:00 +0000 (16:03 +0000)
committerJohan Hovold <johan@kernel.org>
Mon, 13 Mar 2017 15:55:41 +0000 (16:55 +0100)
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: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Johan Hovold <johan@kernel.org>
drivers/usb/serial/ftdi_sio.c

index b774f9d32d4f163dcd84ace836271f931dc90eaa..4032a675643c380e5b8bbfee0712fe414a2861a2 100644 (file)
@@ -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,