Skip to content

Commit 123cf11

Browse files
jwboyergregkh
authored andcommitted
cpupower: Fix segfault due to incorrect getopt_long arugments
commit f447ef4 upstream. If a user calls 'cpupower set --perf-bias 15', the process will end with a SIGSEGV in libc because cpupower-set passes a NULL optarg to the atoi call. This is because the getopt_long structure currently has all of the options as having an optional_argument when they really have a required argument. We change the structure to use required_argument to match the short options and it resolves the issue. This fixes https://bugzilla.redhat.com/show_bug.cgi?id=1000439 Signed-off-by: Josh Boyer <[email protected]> Cc: Dominik Brodowski <[email protected]> Cc: Thomas Renninger <[email protected]> Signed-off-by: Linus Torvalds <[email protected]> Signed-off-by: Greg Kroah-Hartman <[email protected]>
1 parent eab7669 commit 123cf11

File tree

1 file changed

+3
-3
lines changed

1 file changed

+3
-3
lines changed

tools/power/cpupower/utils/cpupower-set.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,9 @@
1818
#include "helpers/bitmask.h"
1919

2020
static struct option set_opts[] = {
21-
{ .name = "perf-bias", .has_arg = optional_argument, .flag = NULL, .val = 'b'},
22-
{ .name = "sched-mc", .has_arg = optional_argument, .flag = NULL, .val = 'm'},
23-
{ .name = "sched-smt", .has_arg = optional_argument, .flag = NULL, .val = 's'},
21+
{ .name = "perf-bias", .has_arg = required_argument, .flag = NULL, .val = 'b'},
22+
{ .name = "sched-mc", .has_arg = required_argument, .flag = NULL, .val = 'm'},
23+
{ .name = "sched-smt", .has_arg = required_argument, .flag = NULL, .val = 's'},
2424
{ },
2525
};
2626

0 commit comments

Comments
 (0)