summaryrefslogtreecommitdiffstats
path: root/cpupower-Fix-segfault-due-to-incorrect-getopt_long-a.patch
diff options
context:
space:
mode:
authorJosh Boyer <jwboyer@fedoraproject.org>2013-10-11 08:50:22 -0400
committerJosh Boyer <jwboyer@fedoraproject.org>2013-10-11 08:50:26 -0400
commit7792df6134ef8e9663a326b5e6af49fd7e3b96a4 (patch)
tree4dcac83f621476978343913d141407d95ba2a64e /cpupower-Fix-segfault-due-to-incorrect-getopt_long-a.patch
parent064673999d41faf2c0c7055f61bf522f75beb379 (diff)
downloadkernel-7792df6134ef8e9663a326b5e6af49fd7e3b96a4.tar.gz
kernel-7792df6134ef8e9663a326b5e6af49fd7e3b96a4.tar.xz
kernel-7792df6134ef8e9663a326b5e6af49fd7e3b96a4.zip
Fix segfault in cpupower set (rhbz 1000439)
Diffstat (limited to 'cpupower-Fix-segfault-due-to-incorrect-getopt_long-a.patch')
-rw-r--r--cpupower-Fix-segfault-due-to-incorrect-getopt_long-a.patch40
1 files changed, 40 insertions, 0 deletions
diff --git a/cpupower-Fix-segfault-due-to-incorrect-getopt_long-a.patch b/cpupower-Fix-segfault-due-to-incorrect-getopt_long-a.patch
new file mode 100644
index 000000000..dcc6b84b6
--- /dev/null
+++ b/cpupower-Fix-segfault-due-to-incorrect-getopt_long-a.patch
@@ -0,0 +1,40 @@
+From cb8e390d258b7f8073afafcbb163976e27346e9d Mon Sep 17 00:00:00 2001
+From: Josh Boyer <jwboyer@fedoraproject.org>
+Date: Fri, 11 Oct 2013 08:37:53 -0400
+Subject: [PATCH] cpupower: Fix segfault due to incorrect getopt_long arugments
+
+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
+
+Cc: stable@vger.kernel.org
+Signed-off-by: Josh Boyer <jwboyer@fedoraproject.org>
+---
+ tools/power/cpupower/utils/cpupower-set.c | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/tools/power/cpupower/utils/cpupower-set.c b/tools/power/cpupower/utils/cpupower-set.c
+index dc4de37..bcf1d2f 100644
+--- a/tools/power/cpupower/utils/cpupower-set.c
++++ b/tools/power/cpupower/utils/cpupower-set.c
+@@ -18,9 +18,9 @@
+ #include "helpers/bitmask.h"
+
+ static struct option set_opts[] = {
+- { .name = "perf-bias", .has_arg = optional_argument, .flag = NULL, .val = 'b'},
+- { .name = "sched-mc", .has_arg = optional_argument, .flag = NULL, .val = 'm'},
+- { .name = "sched-smt", .has_arg = optional_argument, .flag = NULL, .val = 's'},
++ { .name = "perf-bias", .has_arg = required_argument, .flag = NULL, .val = 'b'},
++ { .name = "sched-mc", .has_arg = required_argument, .flag = NULL, .val = 'm'},
++ { .name = "sched-smt", .has_arg = required_argument, .flag = NULL, .val = 's'},
+ { },
+ };
+
+--
+1.8.3.1
+