Blame view

buildroot/buildroot-2016.08.1/package/argp-standalone/0002-isprint.patch 1.22 KB
6b13f685e   김민수   BSP 최초 추가
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
  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>
  ---
  Index: b/argp.h
  ===================================================================
  --- a/argp.h
  +++ b/argp.h
  @@ -23,6 +23,7 @@
   
   #include <stdio.h>
   #include <ctype.h>
  +#include <limits.h>
   
   #define __need_error_t
   #include <errno.h>
  @@ -577,7 +578,7 @@
     else
       {
         int __key = __opt->key;
  -      return __key > 0 && isprint (__key);
  +      return __key > 0 && __key <= UCHAR_MAX && isprint (__key);
       }
   }
   
  Index: b/argp-parse.c
  ===================================================================
  --- a/argp-parse.c
  +++ b/argp-parse.c
  @@ -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);
       }
   }