elf.h SHF_EXCLUDE signed int 31 bit shift triggers undefined behaviour.

Any use of SHF_EXCLUDE in code that tries to check it against sh_flags
will trigger undefined behaviour because it is defined as a 31 bit shift
against an signed integer. Fix by explicitly using an unsigned int.
This commit is contained in:
Mark Wielaard 2015-04-28 13:56:15 +02:00 committed by Florian Weimer
parent 3f2e21e9cf
commit fb4041ae53
2 changed files with 5 additions and 1 deletions

View File

@ -1,3 +1,7 @@
2015-04-28 Mark Wielaard <mjw@redhat.com>
* elf/elf.h (SHF_EXCLUDE): Use unsigned 1 for shift.
2015-04-27 David S. Miller <davem@davemloft.net>
* sysdeps/unix/sysv/linux/sparc/sparc32/localplt.data: Remove

View File

@ -371,7 +371,7 @@ typedef struct
#define SHF_MASKPROC 0xf0000000 /* Processor-specific */
#define SHF_ORDERED (1 << 30) /* Special ordering requirement
(Solaris). */
#define SHF_EXCLUDE (1 << 31) /* Section is excluded unless
#define SHF_EXCLUDE (1U << 31) /* Section is excluded unless
referenced or allocated (Solaris).*/
/* Section group handling. */