summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--package/argp-standalone/0002-isprint.patch35
1 files changed, 35 insertions, 0 deletions
diff --git a/package/argp-standalone/0002-isprint.patch b/package/argp-standalone/0002-isprint.patch
new file mode 100644
index 0000000000..a2962a1631
--- /dev/null
+++ b/package/argp-standalone/0002-isprint.patch
@@ -0,0 +1,35 @@
+Subject: restrict value range passed to isprint function
+
+According to C standards isprint argument shall be representable as an
+unsigned char or be equal to EOF, otherwise the behaviour is undefined.
+
+Passing arbitrary ints leads to segfault in nm program from elfutils.
+
+Restrict isprint argument range to values representable by unsigned char.
+
+Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
+---
+diff -bu argp-standalone-1.3/argp.h argp-standalone-1.3-/argp.h
+--- argp-standalone-1.3/argp.h 2015-04-28 10:31:39.015319337 +0300
++++ argp-standalone-1.3-/argp.h 2015-04-28 10:27:46.526770624 +0300
+@@ -577,7 +577,7 @@
+ else
+ {
+ int __key = __opt->key;
+- return __key > 0 && isprint (__key);
++ return __key > 0 && __key <= UCHAR_MAX && isprint (__key);
+ }
+ }
+
+diff -bu argp-standalone-1.3/argp-parse.c argp-standalone-1.3-/argp-parse.c
+--- argp-standalone-1.3/argp-parse.c 2015-04-28 10:31:39.016319380 +0300
++++ argp-standalone-1.3-/argp-parse.c 2015-04-28 10:27:21.810818130 +0300
+@@ -1292,7 +1292,7 @@
+ int __key = __opt->key;
+ /* FIXME: whether or not a particular key implies a short option
+ * ought not to be locale dependent. */
+- return __key > 0 && isprint (__key);
++ return __key > 0 && __key <= UCHAR_MAX && isprint (__key);
+ }
+ }
+
OpenPOWER on IntegriCloud