tools/x86/kcpuid: Check last token too
authorBorislav Petkov <bp@suse.de>
Mon, 15 Mar 2021 12:08:35 +0000 (13:08 +0100)
committerBorislav Petkov <bp@suse.de>
Thu, 18 Mar 2021 10:36:01 +0000 (11:36 +0100)
Input lines like

  0x8000001E,     0, EAX,   31:0, Extended APIC ID

where the short name is missing lead to a segfault because the loop
takes the long name for the short name and tokens[5] becomes NULL which
explodes later in strcpy().

Check its value too before further processing.

Signed-off-by: Borislav Petkov <bp@suse.de>
Acked-by: Feng Tang <feng.tang@intel.com>
Link: https://lkml.kernel.org/r/20210315125901.30315-1-bp@alien8.de
tools/arch/x86/kcpuid/kcpuid.c

index 6048da34fcc6ad45b10eb82f7856d71ca3ce8400..dae75511fef71fdc0871b4729c33c2fc7db29aa6 100644 (file)
@@ -324,6 +324,8 @@ static int parse_line(char *line)
                str = NULL;
        }
        tokens[5] = strtok(str, "\n");
+       if (!tokens[5])
+               goto err_exit;
 
        /* index/main-leaf */
        index = strtoull(tokens[0], NULL, 0);