firmware_class: make sure fw requests contain a name
authorKees Cook <keescook@chromium.org>
Thu, 18 Sep 2014 18:25:37 +0000 (11:25 -0700)
committerBen Hutchings <ben@decadent.org.uk>
Sun, 14 Dec 2014 16:23:43 +0000 (16:23 +0000)
commit 471b095dfe0d693a8d624cbc716d1ee4d74eb437 upstream.

An empty firmware request name will trigger warnings when building
device names. Make sure this is caught earlier and rejected.

The warning was visible via the test_firmware.ko module interface:

echo -ne "\x00" > /sys/devices/virtual/misc/test_firmware/trigger_request

Reported-by: Sasha Levin <sasha.levin@oracle.com>
Signed-off-by: Kees Cook <keescook@chromium.org>
Tested-by: Sasha Levin <sasha.levin@oracle.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
[bwh: Backported to 3.2: adjust context]
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
drivers/base/firmware_class.c

index 3719c94..763b356 100644 (file)
@@ -521,6 +521,9 @@ static int _request_firmware(const struct firmware **firmware_p,
        if (!firmware_p)
                return -EINVAL;
 
+       if (!name || name[0] == '\0')
+               return -EINVAL;
+
        *firmware_p = firmware = kzalloc(sizeof(*firmware), GFP_KERNEL);
        if (!firmware) {
                dev_err(device, "%s: kmalloc(struct firmware) failed\n",