New upstream version 0.115

This commit is contained in:
roland 2005-09-06 03:23:06 +00:00
parent 1d0f1ffc0c
commit 65b080435c
3 changed files with 155 additions and 189 deletions

View File

@ -1,6 +1,6 @@
--- elfutils/ChangeLog
+++ elfutils/ChangeLog
@@ -15,6 +15,17 @@
@@ -23,6 +23,17 @@
* Makefile.am (all_SUBDIRS): Add libdwfl.
* configure.ac: Write libdwfl/Makefile.
@ -20,7 +20,7 @@
* configure.ac [AH_BOTTOM] (INTDECL, _INTDECL): New macros.
--- elfutils/config/Makefile.in
+++ elfutils/config/Makefile.in
@@ -111,6 +111,7 @@ SHELL = @SHELL@
@@ -113,6 +113,7 @@ SHELL = @SHELL@
STRIP = @STRIP@
USE_NLS = @USE_NLS@
VERSION = @VERSION@
@ -30,16 +30,16 @@
ac_ct_CC = @ac_ct_CC@
--- elfutils/configure
+++ elfutils/configure
@@ -276,7 +276,7 @@ PACKAGE_STRING='Red Hat elfutils 0.114'
@@ -276,7 +276,7 @@ PACKAGE_STRING='Red Hat elfutils 0.115'
PACKAGE_BUGREPORT='http://bugzilla.redhat.com/bugzilla/'
ac_unique_file="libelf/libelf.h"
-ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar MODVERSION build build_cpu build_vendor build_os host host_cpu host_vendor host_os CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE RANLIB ac_ct_RANLIB YACC LEX LEXLIB LEX_OUTPUT_ROOT LOCALEDIR DATADIRNAME NATIVE_LD_TRUE NATIVE_LD_FALSE base_cpu MUDFLAP_TRUE MUDFLAP_FALSE GPROF_TRUE GPROF_FALSE BUILD_STATIC_TRUE BUILD_STATIC_FALSE LIBEBL_SUBDIR USE_NLS MKINSTALLDIRS MSGFMT GMSGFMT XGETTEXT MSGMERGE LIBOBJS LTLIBOBJS'
+ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar MODVERSION build build_cpu build_vendor build_os host host_cpu host_vendor host_os CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE RANLIB ac_ct_RANLIB YACC LEX LEXLIB LEX_OUTPUT_ROOT WEXTRA LOCALEDIR DATADIRNAME NATIVE_LD_TRUE NATIVE_LD_FALSE base_cpu MUDFLAP_TRUE MUDFLAP_FALSE GPROF_TRUE GPROF_FALSE BUILD_STATIC_TRUE BUILD_STATIC_FALSE LIBEBL_SUBDIR USE_NLS MKINSTALLDIRS MSGFMT GMSGFMT XGETTEXT MSGMERGE LIBOBJS LTLIBOBJS'
-ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar MODVERSION build build_cpu build_vendor build_os host host_cpu host_vendor host_os CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE RANLIB ac_ct_RANLIB YACC LEX LEXLIB LEX_OUTPUT_ROOT LOCALEDIR DATADIRNAME NATIVE_LD_TRUE NATIVE_LD_FALSE base_cpu MUDFLAP_TRUE MUDFLAP_FALSE GPROF_TRUE GPROF_FALSE GCOV_TRUE GCOV_FALSE BUILD_STATIC_TRUE BUILD_STATIC_FALSE LIBEBL_SUBDIR USE_NLS MKINSTALLDIRS MSGFMT GMSGFMT XGETTEXT MSGMERGE LIBOBJS LTLIBOBJS'
+ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar MODVERSION build build_cpu build_vendor build_os host host_cpu host_vendor host_os CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE RANLIB ac_ct_RANLIB YACC LEX LEXLIB LEX_OUTPUT_ROOT WEXTRA LOCALEDIR DATADIRNAME NATIVE_LD_TRUE NATIVE_LD_FALSE base_cpu MUDFLAP_TRUE MUDFLAP_FALSE GPROF_TRUE GPROF_FALSE GCOV_TRUE GCOV_FALSE BUILD_STATIC_TRUE BUILD_STATIC_FALSE LIBEBL_SUBDIR USE_NLS MKINSTALLDIRS MSGFMT GMSGFMT XGETTEXT MSGMERGE LIBOBJS LTLIBOBJS'
ac_subst_files=''
# Initialize some variables set by options.
@@ -3383,6 +3383,58 @@ echo "$as_me: error: gcc with C99 suppor
@@ -3384,6 +3384,58 @@ echo "$as_me: error: gcc with C99 suppor
fi
@ -98,7 +98,7 @@
LOCALEDIR=$datadir
cat >>confdefs.h <<_ACEOF
@@ -4893,6 +4945,7 @@ s,@YACC@,$YACC,;t t
@@ -4925,6 +4977,7 @@ s,@YACC@,$YACC,;t t
s,@LEX@,$LEX,;t t
s,@LEXLIB@,$LEXLIB,;t t
s,@LEX_OUTPUT_ROOT@,$LEX_OUTPUT_ROOT,;t t
@ -126,7 +126,7 @@
AC_DEFINE_UNQUOTED(LOCALEDIR, "$LOCALEDIR")
--- elfutils/lib/ChangeLog
+++ elfutils/lib/ChangeLog
@@ -8,6 +8,11 @@
@@ -12,6 +12,11 @@
* Makefile.am (libeu_a_SOURCES): Add it.
* system.h: Declare crc32_file.
@ -157,7 +157,7 @@
noinst_LIBRARIES = libeu.a
--- elfutils/lib/Makefile.in
+++ elfutils/lib/Makefile.in
@@ -133,6 +133,7 @@ SHELL = @SHELL@
@@ -135,6 +135,7 @@ SHELL = @SHELL@
STRIP = @STRIP@
USE_NLS = @USE_NLS@
VERSION = @VERSION@
@ -165,7 +165,7 @@
XGETTEXT = @XGETTEXT@
YACC = @YACC@
ac_ct_CC = @ac_ct_CC@
@@ -175,9 +176,9 @@ sharedstatedir = @sharedstatedir@
@@ -177,9 +178,9 @@ sharedstatedir = @sharedstatedir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
@MUDFLAP_FALSE@AM_CFLAGS = -fpic -Wall -Wshadow -Werror -Wunused \
@ -179,7 +179,7 @@
libeu_a_SOURCES = xstrdup.c xstrndup.c xmalloc.c next_prime.c \
--- elfutils/libasm/ChangeLog
+++ elfutils/libasm/ChangeLog
@@ -14,6 +14,11 @@
@@ -24,6 +24,11 @@
* asm_error.c: Add new error ASM_E_IOERROR.
* libasmP.h: Add ASM_E_IOERROR definition.
@ -210,7 +210,7 @@
GCC_INCLUDE = -I$(shell $(CC) -print-file-name=include)
--- elfutils/libasm/Makefile.in
+++ elfutils/libasm/Makefile.in
@@ -165,6 +165,7 @@ SHELL = @SHELL@
@@ -167,6 +167,7 @@ SHELL = @SHELL@
STRIP = @STRIP@
USE_NLS = @USE_NLS@
VERSION = 1
@ -218,7 +218,7 @@
XGETTEXT = @XGETTEXT@
YACC = @YACC@
ac_ct_CC = @ac_ct_CC@
@@ -207,9 +208,9 @@ sharedstatedir = @sharedstatedir@
@@ -209,9 +210,9 @@ sharedstatedir = @sharedstatedir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
@MUDFLAP_FALSE@AM_CFLAGS = -std=gnu99 -Wall -Wshadow -Werror -Wunused \
@ -255,7 +255,7 @@
noinst_LIBRARIES = libcpu_i386.a
--- elfutils/libcpu/Makefile.in
+++ elfutils/libcpu/Makefile.in
@@ -128,6 +128,7 @@ SHELL = @SHELL@
@@ -130,6 +130,7 @@ SHELL = @SHELL@
STRIP = @STRIP@
USE_NLS = @USE_NLS@
VERSION = @VERSION@
@ -263,7 +263,7 @@
XGETTEXT = @XGETTEXT@
YACC = @YACC@
ac_ct_CC = @ac_ct_CC@
@@ -169,7 +170,7 @@ sbindir = @sbindir@
@@ -171,7 +172,7 @@ sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
@ -274,7 +274,7 @@
libcpu_i386_a_SOURCES = i386_dis.c
--- elfutils/libdw/ChangeLog
+++ elfutils/libdw/ChangeLog
@@ -112,6 +112,11 @@
@@ -140,6 +140,11 @@
2005-05-31 Roland McGrath <roland@redhat.com>
@ -305,7 +305,7 @@
--- elfutils/libdw/Makefile.in
+++ elfutils/libdw/Makefile.in
@@ -204,6 +204,7 @@ SHELL = @SHELL@
@@ -207,6 +207,7 @@ SHELL = @SHELL@
STRIP = @STRIP@
USE_NLS = @USE_NLS@
VERSION = 1
@ -313,7 +313,7 @@
XGETTEXT = @XGETTEXT@
YACC = @YACC@
ac_ct_CC = @ac_ct_CC@
@@ -246,9 +247,9 @@ sharedstatedir = @sharedstatedir@
@@ -249,9 +250,9 @@ sharedstatedir = @sharedstatedir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
@MUDFLAP_FALSE@AM_CFLAGS = -Wall -Werror -Wshadow -Wunused -Wformat=2 \
@ -323,11 +323,11 @@
-@MUDFLAP_TRUE@ -Wformat=2 -Wextra -std=gnu99
+@MUDFLAP_TRUE@ -Wformat=2 $(WEXTRA) -std=gnu99
INCLUDES = -I. -I$(srcdir) -I$(srcdir)/../libelf -I.. -I$(srcdir)/../lib
lib_LIBRARIES = libdw.a
@MUDFLAP_FALSE@noinst_LIBRARIES = libdw_pic.a
COMPILE.os = $(filter-out -fprofile-arcs, $(filter-out -ftest-coverage, \
$(COMPILE)))
--- elfutils/libdwfl/ChangeLog
+++ elfutils/libdwfl/ChangeLog
@@ -180,6 +180,11 @@
@@ -192,6 +192,11 @@
2005-07-21 Roland McGrath <roland@redhat.com>
@ -358,7 +358,7 @@
VERSION = 1
--- elfutils/libdwfl/Makefile.in
+++ elfutils/libdwfl/Makefile.in
@@ -161,6 +161,7 @@ SHELL = @SHELL@
@@ -163,6 +163,7 @@ SHELL = @SHELL@
STRIP = @STRIP@
USE_NLS = @USE_NLS@
VERSION = 1
@ -366,7 +366,7 @@
XGETTEXT = @XGETTEXT@
YACC = @YACC@
ac_ct_CC = @ac_ct_CC@
@@ -203,9 +204,9 @@ sharedstatedir = @sharedstatedir@
@@ -205,9 +206,9 @@ sharedstatedir = @sharedstatedir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
@MUDFLAP_FALSE@AM_CFLAGS = -Wall -Werror -Wshadow -Wunused -Wformat=2 \
@ -380,7 +380,7 @@
--- elfutils/libebl/ChangeLog
+++ elfutils/libebl/ChangeLog
@@ -148,6 +148,11 @@
@@ -152,6 +152,11 @@
* Makefile.am (libebl_*_so_SOURCES): Set to $(*_SRCS) so dependency
tracking works right.
@ -411,7 +411,7 @@
INCLUDES = -I$(srcdir) -I$(top_srcdir)/libelf -I$(top_srcdir)/lib -I..
--- elfutils/libebl/Makefile.in
+++ elfutils/libebl/Makefile.in
@@ -256,6 +256,7 @@ SHELL = @SHELL@
@@ -258,6 +258,7 @@ SHELL = @SHELL@
STRIP = @STRIP@
USE_NLS = @USE_NLS@
VERSION = 1
@ -419,7 +419,7 @@
XGETTEXT = @XGETTEXT@
YACC = @YACC@
ac_ct_CC = @ac_ct_CC@
@@ -298,9 +299,9 @@ sharedstatedir = @sharedstatedir@
@@ -300,9 +301,9 @@ sharedstatedir = @sharedstatedir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
@MUDFLAP_FALSE@AM_CFLAGS = -fpic -Wall -Wshadow -Werror -Wunused \
@ -433,7 +433,7 @@
modules = i386 sh x86_64 ia64 alpha arm sparc ppc ppc64
--- elfutils/libelf/ChangeLog
+++ elfutils/libelf/ChangeLog
@@ -62,6 +62,11 @@
@@ -86,6 +86,11 @@
If section content hasn't been read yet, do it before looking for the
block size. If no section data present, infer size of section header.
@ -498,7 +498,7 @@
@MUDFLAP_FALSE@noinst_PROGRAMS = $(am__EXEEXT_1)
@MUDFLAP_TRUE@am_libelf_pic_a_OBJECTS =
subdir = libelf
@@ -208,6 +208,7 @@ SHELL = @SHELL@
@@ -210,6 +210,7 @@ SHELL = @SHELL@
STRIP = @STRIP@
USE_NLS = @USE_NLS@
VERSION = 1
@ -506,7 +506,7 @@
XGETTEXT = @XGETTEXT@
YACC = @YACC@
ac_ct_CC = @ac_ct_CC@
@@ -250,10 +251,10 @@ sharedstatedir = @sharedstatedir@
@@ -252,10 +253,10 @@ sharedstatedir = @sharedstatedir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
@MUDFLAP_FALSE@AM_CFLAGS = $(am__append_1) -Wall -Wshadow -Werror \
@ -521,7 +521,7 @@
GCC_INCLUDE = -I$(shell $(CC) -print-file-name=include)
--- elfutils/m4/Makefile.in
+++ elfutils/m4/Makefile.in
@@ -109,6 +109,7 @@ SHELL = @SHELL@
@@ -111,6 +111,7 @@ SHELL = @SHELL@
STRIP = @STRIP@
USE_NLS = @USE_NLS@
VERSION = @VERSION@
@ -531,7 +531,7 @@
ac_ct_CC = @ac_ct_CC@
--- elfutils/Makefile.in
+++ elfutils/Makefile.in
@@ -133,6 +133,7 @@ SHELL = @SHELL@
@@ -135,6 +135,7 @@ SHELL = @SHELL@
STRIP = @STRIP@
USE_NLS = @USE_NLS@
VERSION = @VERSION@
@ -541,7 +541,7 @@
ac_ct_CC = @ac_ct_CC@
--- elfutils/src/ChangeLog
+++ elfutils/src/ChangeLog
@@ -179,6 +179,11 @@
@@ -216,6 +216,11 @@
* readelf.c (print_debug_loc_section): Fix indentation for larger
address size.
@ -589,7 +589,7 @@
INCLUDES = -I$(srcdir) -I$(srcdir)/../libelf -I$(srcdir)/../libebl \
--- elfutils/src/Makefile.in
+++ elfutils/src/Makefile.in
@@ -215,6 +215,7 @@ SHELL = @SHELL@
@@ -221,6 +221,7 @@ SHELL = @SHELL@
STRIP = @STRIP@
USE_NLS = @USE_NLS@
VERSION = @VERSION@
@ -597,7 +597,7 @@
XGETTEXT = @XGETTEXT@
YACC = @YACC@ -d
ac_ct_CC = @ac_ct_CC@
@@ -259,12 +260,12 @@ target_alias = @target_alias@
@@ -265,12 +266,12 @@ target_alias = @target_alias@
@MUDFLAP_FALSE@AM_CFLAGS = -Wall -Wshadow -std=gnu99 \
@MUDFLAP_FALSE@ $(native_ld_cflags) $(if \
@MUDFLAP_FALSE@ $($(*F)_no_Werror),,-Werror) $(if \
@ -666,7 +666,7 @@
cannot set access and modification date of '%s'"), fname);
--- elfutils/tests/ChangeLog
+++ elfutils/tests/ChangeLog
@@ -86,6 +86,11 @@
@@ -161,6 +161,11 @@
* Makefile.am (TESTS): Add run-elflint-test.sh.
(EXTRA_DIST): Add run-elflint-test.sh and testfile18.bz2.
@ -698,7 +698,7 @@
endif
--- elfutils/tests/Makefile.in
+++ elfutils/tests/Makefile.in
@@ -280,6 +280,7 @@ SHELL = @SHELL@
@@ -287,6 +287,7 @@ SHELL = @SHELL@
STRIP = @STRIP@
USE_NLS = @USE_NLS@
VERSION = @VERSION@
@ -706,7 +706,7 @@
XGETTEXT = @XGETTEXT@
YACC = @YACC@
ac_ct_CC = @ac_ct_CC@
@@ -321,10 +322,10 @@ sbindir = @sbindir@
@@ -328,10 +329,10 @@ sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@

View File

@ -19,8 +19,8 @@ libelf/
bounds.
* elf32_getshdr.c (elfw2(LIBELFBITS,getshdr)): Fix comment pasto.
Check if section header table fits into object's bounds.
* elf_begin.c (get_shnum): Fail if maxsize is smaller than ELF headers.
Ensure first section header fits into object's bounds.
* elf_begin.c (get_shnum): Ensure section headers fits into
object's bounds.
(file_read_elf): Make sure scncnt is small enough to allocate both
ElfXX_Shdr and Elf_Scn array. Make sure section and program header
tables fit into object's bounds. Avoid memory leak on failure.
@ -65,9 +65,9 @@ src/
(check_symtab, is_rel_dyn, check_rela, check_rel, check_dynamic,
check_symtab_shndx, check_hash, check_versym): Robustify.
--- elfutils-0.114/libelf/elf32_getphdr.c
+++ elfutils-0.114/libelf/elf32_getphdr.c
@@ -80,6 +80,16 @@ elfw2(LIBELFBITS,getphdr) (elf)
--- elfutils-0.115/libelf/elf32_getphdr.c
+++ elfutils-0.115/libelf/elf32_getphdr.c
@@ -82,6 +82,16 @@ elfw2(LIBELFBITS,getphdr) (elf)
if (elf->map_address != NULL)
{
@ -84,9 +84,9 @@ src/
/* All the data is already mapped. Use it. */
if (ehdr->e_ident[EI_DATA] == MY_ELFDATA
&& (ALLOW_UNALIGNED
--- elfutils-0.114/libelf/elf32_getshdr.c
+++ elfutils-0.114/libelf/elf32_getshdr.c
@@ -66,11 +66,12 @@ elfw2(LIBELFBITS,getshdr) (scn)
--- elfutils-0.115/libelf/elf32_getshdr.c
+++ elfutils-0.115/libelf/elf32_getshdr.c
@@ -68,11 +68,12 @@ elfw2(LIBELFBITS,getshdr) (scn)
goto out;
size_t shnum;
@ -101,7 +101,7 @@ src/
of entries from the ELF header. */
ElfW2(LIBELFBITS,Shdr) *shdr = elf->state.ELFW(elf,LIBELFBITS).shdr =
(ElfW2(LIBELFBITS,Shdr) *) malloc (size);
@@ -92,6 +93,16 @@ elfw2(LIBELFBITS,getshdr) (scn)
@@ -94,6 +95,16 @@ elfw2(LIBELFBITS,getshdr) (scn)
&& (ehdr->e_shoff
& (__alignof__ (ElfW2(LIBELFBITS,Shdr)) - 1)) != 0));
@ -118,8 +118,8 @@ src/
/* Now copy the data and at the same time convert the byte
order. */
if (ALLOW_UNALIGNED
--- elfutils-0.114/libelf/elf32_newphdr.c
+++ elfutils-0.114/libelf/elf32_newphdr.c
--- elfutils-0.115/libelf/elf32_newphdr.c
+++ elfutils-0.115/libelf/elf32_newphdr.c
@@ -1,5 +1,5 @@
/* Create new ELF program header table.
- Copyright (C) 1999, 2000, 2002 Red Hat, Inc.
@ -140,9 +140,9 @@ src/
/* Allocate a new program header with the appropriate number of
elements. */
result = (ElfW2(LIBELFBITS,Phdr) *)
--- elfutils-0.114/libelf/elf32_updatefile.c
+++ elfutils-0.114/libelf/elf32_updatefile.c
@@ -164,6 +164,9 @@ __elfw2(LIBELFBITS,updatemmap) (Elf *elf
--- elfutils-0.115/libelf/elf32_updatefile.c
+++ elfutils-0.115/libelf/elf32_updatefile.c
@@ -166,6 +166,9 @@ __elfw2(LIBELFBITS,updatemmap) (Elf *elf
/* Write all the sections. Well, only those which are modified. */
if (shnum > 0)
{
@ -152,7 +152,7 @@ src/
ElfW2(LIBELFBITS,Shdr) *shdr_dest;
Elf_ScnList *list = &elf->state.ELFW(elf,LIBELFBITS).scns;
Elf_Scn **scns = (Elf_Scn **) alloca (shnum * sizeof (Elf_Scn *));
@@ -468,6 +471,10 @@ __elfw2(LIBELFBITS,updatefile) (Elf *elf
@@ -470,6 +473,10 @@ __elfw2(LIBELFBITS,updatefile) (Elf *elf
/* Write all the sections. Well, only those which are modified. */
if (shnum > 0)
{
@ -163,22 +163,9 @@ src/
off_t shdr_offset = elf->start_offset + ehdr->e_shoff;
#if EV_NUM != 2
xfct_t shdr_fctp = __elf_xfctstom[__libelf_version - 1][EV_CURRENT - 1][ELFW(ELFCLASS, LIBELFBITS) - 1][ELF_T_SHDR];
--- elfutils-0.114/libelf/elf_begin.c
+++ elfutils-0.114/libelf/elf_begin.c
@@ -82,7 +82,11 @@ get_shnum (void *map_address, unsigned c
|| (((size_t) ((char *) map_address + offset))
& ((is32 ? __alignof__ (Elf32_Ehdr) : __alignof__ (Elf64_Ehdr))
- 1)) == 0))
- ehdr.p = (char *) map_address + offset;
+ {
+ ehdr.p = (char *) map_address + offset;
+ if (maxsize < (is32 ? sizeof (Elf32_Ehdr) : sizeof (Elf64_Ehdr)))
+ return (size_t) -1l;
+ }
else
{
/* We have to read the data from the file. */
@@ -122,7 +126,8 @@ get_shnum (void *map_address, unsigned c
--- elfutils-0.115/libelf/elf_begin.c
+++ elfutils-0.115/libelf/elf_begin.c
@@ -122,7 +122,8 @@ get_shnum (void *map_address, unsigned c
if (unlikely (result == 0) && ehdr.e32->e_shoff != 0)
{
@ -188,7 +175,7 @@ src/
/* Cannot read the first section header. */
return (size_t) -1l;
@@ -167,7 +172,8 @@ get_shnum (void *map_address, unsigned c
@@ -165,7 +166,8 @@ get_shnum (void *map_address, unsigned c
if (unlikely (result == 0) && ehdr.e64->e_shoff != 0)
{
@ -198,7 +185,7 @@ src/
/* Cannot read the first section header. */
return (size_t) -1l;
@@ -258,6 +264,15 @@ file_read_elf (int fildes, void *map_add
@@ -232,6 +234,15 @@ file_read_elf (int fildes, void *map_add
/* Could not determine the number of sections. */
return NULL;
@ -212,100 +199,78 @@ src/
+ return NULL;
+
/* We can now allocate the memory. */
elf = allocate_elf (fildes, map_address, offset, maxsize, cmd, parent,
ELF_K_ELF, scncnt * sizeof (Elf_Scn));
@@ -289,15 +304,31 @@ file_read_elf (int fildes, void *map_add
Elf *elf = allocate_elf (fildes, map_address, offset, maxsize, cmd, parent,
ELF_K_ELF, scncnt * sizeof (Elf_Scn));
@@ -265,13 +276,31 @@ file_read_elf (int fildes, void *map_add
{
/* We can use the mmapped memory. */
elf->state.elf32.ehdr =
(Elf32_Ehdr *) ((char *) map_address + offset);
+ if (unlikely (elf->state.elf32.ehdr->e_shoff >= maxsize)
+ || unlikely (elf->state.elf32.ehdr->e_shoff
elf->state.elf32.ehdr = ehdr;
+
+ if (unlikely (ehdr->e_shoff >= maxsize)
+ || unlikely (ehdr->e_shoff
+ + scncnt * sizeof (Elf32_Shdr) > maxsize))
+ {
+ free_and_out:
+ __libelf_seterrno (ELF_E_INVALID_FILE);
+ free (elf);
+ __libelf_seterrno (ELF_E_INVALID_FILE);
+ return NULL;
+ }
elf->state.elf32.shdr =
(Elf32_Shdr *) ((char *) map_address + offset
+ elf->state.elf32.ehdr->e_shoff);
if (elf->state.elf32.ehdr->e_phnum)
elf->state.elf32.shdr
= (Elf32_Shdr *) ((char *) ehdr + ehdr->e_shoff);
+
if (ehdr->e_phnum > 0)
- /* Assign a value only if there really is a program
- header. Otherwise the value remains NULL. */
- elf->state.elf32.phdr
- = (Elf32_Phdr *) ((char *) map_address + offset
- + elf->state.elf32.ehdr->e_phoff);
- = (Elf32_Phdr *) ((char *) ehdr + ehdr->e_phoff);
+ {
+ /* Assign a value only if there really is a program
+ header. Otherwise the value remains NULL. */
+ if (unlikely (elf->state.elf32.ehdr->e_phoff >= maxsize)
+ || unlikely (elf->state.elf32.ehdr->e_phoff
+ + elf->state.elf32.ehdr->e_phnum
+ if (unlikely (ehdr->e_phoff >= maxsize)
+ || unlikely (ehdr->e_phoff
+ + ehdr->e_phnum
+ * sizeof (Elf32_Phdr) > maxsize))
+ goto free_and_out;
+ elf->state.elf32.phdr
+ = (Elf32_Phdr *) ((char *) map_address + offset
+ + elf->state.elf32.ehdr->e_phoff);
+ = (Elf32_Phdr *) ((char *) ehdr + ehdr->e_phoff);
+ }
for (size_t cnt = 0; cnt < scncnt; ++cnt)
{
@@ -326,8 +357,7 @@ file_read_elf (int fildes, void *map_add
!= sizeof (Elf32_Ehdr))
{
/* We must be able to read the ELF header. */
- __libelf_seterrno (ELF_E_INVALID_FILE);
- return NULL;
+ goto free_and_out;
}
if (e_ident[EI_DATA] != MY_ELFDATA)
@@ -381,15 +411,26 @@ file_read_elf (int fildes, void *map_add
@@ -340,13 +369,26 @@ file_read_elf (int fildes, void *map_add
{
/* We can use the mmapped memory. */
elf->state.elf64.ehdr =
(Elf64_Ehdr *) ((char *) map_address + offset);
+ if (unlikely (elf->state.elf64.ehdr->e_shoff >= maxsize)
+ || unlikely (elf->state.elf64.ehdr->e_shoff
+ + scncnt * sizeof (Elf64_Shdr) > maxsize))
elf->state.elf64.ehdr = ehdr;
+
+ if (unlikely (ehdr->e_shoff >= maxsize)
+ || unlikely (ehdr->e_shoff
+ + scncnt * sizeof (Elf32_Shdr) > maxsize))
+ goto free_and_out;
elf->state.elf64.shdr =
(Elf64_Shdr *) ((char *) map_address + offset
+ elf->state.elf64.ehdr->e_shoff);
if (elf->state.elf64.ehdr->e_phnum)
elf->state.elf64.shdr
= (Elf64_Shdr *) ((char *) ehdr + ehdr->e_shoff);
+
if (ehdr->e_phnum > 0)
- /* Assign a value only if there really is a program
- header. Otherwise the value remains NULL. */
- elf->state.elf64.phdr
- = (Elf64_Phdr *) ((char *) map_address + offset
- + elf->state.elf64.ehdr->e_phoff);
- = (Elf64_Phdr *) ((char *) ehdr + ehdr->e_phoff);
+ {
+ /* Assign a value only if there really is a program
+ header. Otherwise the value remains NULL. */
+ if (unlikely (elf->state.elf64.ehdr->e_phoff >= maxsize)
+ || unlikely (elf->state.elf64.ehdr->e_phoff
+ + elf->state.elf64.ehdr->e_phnum
+ * sizeof (Elf64_Phdr) > maxsize))
+ if (unlikely (ehdr->e_phoff >= maxsize)
+ || unlikely (ehdr->e_phoff
+ + ehdr->e_phnum
+ * sizeof (Elf32_Phdr) > maxsize))
+ goto free_and_out;
+ elf->state.elf64.phdr
+ = (Elf64_Phdr *) ((char *) map_address + offset
+ + elf->state.elf64.ehdr->e_phoff);
+ = (Elf64_Phdr *) ((char *) ehdr + ehdr->e_phoff);
+ }
for (size_t cnt = 0; cnt < scncnt; ++cnt)
{
@@ -418,8 +459,7 @@ file_read_elf (int fildes, void *map_add
!= sizeof (Elf64_Ehdr))
{
/* We must be able to read the ELF header. */
- __libelf_seterrno (ELF_E_INVALID_FILE);
- return NULL;
+ goto free_and_out;
}
if (e_ident[EI_DATA] != MY_ELFDATA)
--- elfutils-0.114/libelf/elf_getarsym.c
+++ elfutils-0.114/libelf/elf_getarsym.c
@@ -149,6 +149,9 @@ elf_getarsym (elf, ptr)
--- elfutils-0.115/libelf/elf_getarsym.c
+++ elfutils-0.115/libelf/elf_getarsym.c
@@ -146,6 +146,9 @@ elf_getarsym (elf, ptr)
size_t index_size = atol (tmpbuf);
if (SARMAG + sizeof (struct ar_hdr) + index_size > elf->maximum_size
@ -315,16 +280,9 @@ src/
|| n * sizeof (uint32_t) > index_size)
{
/* This index table cannot be right since it does not fit into
--- elfutils-0.114/libelf/elf_getshstrndx.c
+++ elfutils-0.114/libelf/elf_getshstrndx.c
@@ -1,5 +1,5 @@
/* Return section index of section header string table.
- Copyright (C) 2002 Red Hat, Inc.
+ Copyright (C) 2002, 2005 Red Hat, Inc.
Written by Ulrich Drepper <drepper@redhat.com>, 2002.
This program is free software; you can redistribute it and/or modify
@@ -90,10 +90,25 @@ elf_getshstrndx (elf, dst)
--- elfutils-0.115/libelf/elf_getshstrndx.c
+++ elfutils-0.115/libelf/elf_getshstrndx.c
@@ -92,10 +92,25 @@ elf_getshstrndx (elf, dst)
if (elf->map_address != NULL
&& elf->state.elf32.ehdr->e_ident[EI_DATA] == MY_ELFDATA
&& (ALLOW_UNALIGNED
@ -348,12 +306,12 @@ src/
+
+ /* We can directly access the memory. */
+ num = ((Elf32_Shdr *) (elf->map_address + elf->start_offset
+ + offset))->sh_link;
+ + offset))->sh_link;
+ }
else
{
/* We avoid reading in all the section headers. Just read
@@ -129,10 +144,25 @@ elf_getshstrndx (elf, dst)
@@ -130,10 +145,25 @@ elf_getshstrndx (elf, dst)
if (elf->map_address != NULL
&& elf->state.elf64.ehdr->e_ident[EI_DATA] == MY_ELFDATA
&& (ALLOW_UNALIGNED
@ -382,8 +340,8 @@ src/
else
{
/* We avoid reading in all the section headers. Just read
--- elfutils-0.114/libelf/elf_newscn.c
+++ elfutils-0.114/libelf/elf_newscn.c
--- elfutils-0.115/libelf/elf_newscn.c
+++ elfutils-0.115/libelf/elf_newscn.c
@@ -1,5 +1,5 @@
/* Append new section.
- Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
@ -417,8 +375,8 @@ src/
if (newp == NULL)
{
__libelf_seterrno (ELF_E_NOMEM);
--- elfutils-0.114/libelf/gelf_getdyn.c
+++ elfutils-0.114/libelf/gelf_getdyn.c
--- elfutils-0.115/libelf/gelf_getdyn.c
+++ elfutils-0.115/libelf/gelf_getdyn.c
@@ -1,5 +1,5 @@
/* Get information from dynamic table at the given index.
- Copyright (C) 2000, 2001, 2002 Red Hat, Inc.
@ -446,8 +404,8 @@ src/
{
__libelf_seterrno (ELF_E_INVALID_INDEX);
goto out;
--- elfutils-0.114/libelf/gelf_getlib.c
+++ elfutils-0.114/libelf/gelf_getlib.c
--- elfutils-0.115/libelf/gelf_getlib.c
+++ elfutils-0.115/libelf/gelf_getlib.c
@@ -1,5 +1,5 @@
/* Get library from table at the given index.
- Copyright (C) 2004 Red Hat, Inc.
@ -465,8 +423,8 @@ src/
__libelf_seterrno (ELF_E_INVALID_INDEX);
else
{
--- elfutils-0.114/libelf/gelf_getmove.c
+++ elfutils-0.114/libelf/gelf_getmove.c
--- elfutils-0.115/libelf/gelf_getmove.c
+++ elfutils-0.115/libelf/gelf_getmove.c
@@ -1,5 +1,5 @@
/* Get move structure at the given index.
- Copyright (C) 2000, 2001, 2002 Red Hat, Inc.
@ -484,8 +442,8 @@ src/
{
__libelf_seterrno (ELF_E_INVALID_INDEX);
goto out;
--- elfutils-0.114/libelf/gelf_getrela.c
+++ elfutils-0.114/libelf/gelf_getrela.c
--- elfutils-0.115/libelf/gelf_getrela.c
+++ elfutils-0.115/libelf/gelf_getrela.c
@@ -1,5 +1,5 @@
/* Get RELA relocation information at given index.
- Copyright (C) 2000, 2001, 2002 Red Hat, Inc.
@ -526,8 +484,8 @@ src/
{
__libelf_seterrno (ELF_E_INVALID_INDEX);
result = NULL;
--- elfutils-0.114/libelf/gelf_getrel.c
+++ elfutils-0.114/libelf/gelf_getrel.c
--- elfutils-0.115/libelf/gelf_getrel.c
+++ elfutils-0.115/libelf/gelf_getrel.c
@@ -1,5 +1,5 @@
/* Get REL relocation information at given index.
- Copyright (C) 2000, 2001, 2002 Red Hat, Inc.
@ -568,8 +526,8 @@ src/
{
__libelf_seterrno (ELF_E_INVALID_INDEX);
result = NULL;
--- elfutils-0.114/libelf/gelf_getsym.c
+++ elfutils-0.114/libelf/gelf_getsym.c
--- elfutils-0.115/libelf/gelf_getsym.c
+++ elfutils-0.115/libelf/gelf_getsym.c
@@ -1,5 +1,5 @@
/* Get symbol information from symbol table at the given index.
- Copyright (C) 1999, 2000, 2001, 2002 Red Hat, Inc.
@ -597,8 +555,8 @@ src/
{
__libelf_seterrno (ELF_E_INVALID_INDEX);
goto out;
--- elfutils-0.114/libelf/gelf_getsyminfo.c
+++ elfutils-0.114/libelf/gelf_getsyminfo.c
--- elfutils-0.115/libelf/gelf_getsyminfo.c
+++ elfutils-0.115/libelf/gelf_getsyminfo.c
@@ -1,5 +1,5 @@
/* Get additional symbol information from symbol table at the given index.
- Copyright (C) 2000, 2001, 2002 Red Hat, Inc.
@ -616,8 +574,8 @@ src/
{
__libelf_seterrno (ELF_E_INVALID_INDEX);
goto out;
--- elfutils-0.114/libelf/gelf_getsymshndx.c
+++ elfutils-0.114/libelf/gelf_getsymshndx.c
--- elfutils-0.115/libelf/gelf_getsymshndx.c
+++ elfutils-0.115/libelf/gelf_getsymshndx.c
@@ -1,6 +1,6 @@
/* Get symbol information and separate section index from symbol table
at the given index.
@ -657,8 +615,8 @@ src/
{
__libelf_seterrno (ELF_E_INVALID_INDEX);
goto out;
--- elfutils-0.114/libelf/gelf_getversym.c
+++ elfutils-0.114/libelf/gelf_getversym.c
--- elfutils-0.115/libelf/gelf_getversym.c
+++ elfutils-0.115/libelf/gelf_getversym.c
@@ -1,5 +1,5 @@
/* Get symbol version information at the given index.
- Copyright (C) 1999, 2000, 2001, 2002 Red Hat, Inc.
@ -676,8 +634,8 @@ src/
{
__libelf_seterrno (ELF_E_INVALID_INDEX);
result = NULL;
--- elfutils-0.114/libelf/gelf_update_dyn.c
+++ elfutils-0.114/libelf/gelf_update_dyn.c
--- elfutils-0.115/libelf/gelf_update_dyn.c
+++ elfutils-0.115/libelf/gelf_update_dyn.c
@@ -1,5 +1,5 @@
/* Update information in dynamic table at the given index.
- Copyright (C) 2000, 2001, 2002 Red Hat, Inc.
@ -718,8 +676,8 @@ src/
{
__libelf_seterrno (ELF_E_INVALID_INDEX);
goto out;
--- elfutils-0.114/libelf/gelf_update_lib.c
+++ elfutils-0.114/libelf/gelf_update_lib.c
--- elfutils-0.115/libelf/gelf_update_lib.c
+++ elfutils-0.115/libelf/gelf_update_lib.c
@@ -1,5 +1,5 @@
/* Update library in table at the given index.
- Copyright (C) 2004 Red Hat, Inc.
@ -750,8 +708,8 @@ src/
__libelf_seterrno (ELF_E_INVALID_INDEX);
else
{
--- elfutils-0.114/libelf/gelf_update_move.c
+++ elfutils-0.114/libelf/gelf_update_move.c
--- elfutils-0.115/libelf/gelf_update_move.c
+++ elfutils-0.115/libelf/gelf_update_move.c
@@ -1,5 +1,5 @@
/* Update move structure at the given index.
- Copyright (C) 2000, 2001, 2002 Red Hat, Inc.
@ -768,8 +726,8 @@ src/
|| unlikely ((ndx + 1) * sizeof (GElf_Move) > data_scn->d.d_size))
{
__libelf_seterrno (ELF_E_INVALID_INDEX);
--- elfutils-0.114/libelf/gelf_update_rela.c
+++ elfutils-0.114/libelf/gelf_update_rela.c
--- elfutils-0.115/libelf/gelf_update_rela.c
+++ elfutils-0.115/libelf/gelf_update_rela.c
@@ -1,5 +1,5 @@
/* Update RELA relocation information at given index.
- Copyright (C) 2000, 2001, 2002 Red Hat, Inc.
@ -810,8 +768,8 @@ src/
{
__libelf_seterrno (ELF_E_INVALID_INDEX);
goto out;
--- elfutils-0.114/libelf/gelf_update_rel.c
+++ elfutils-0.114/libelf/gelf_update_rel.c
--- elfutils-0.115/libelf/gelf_update_rel.c
+++ elfutils-0.115/libelf/gelf_update_rel.c
@@ -1,5 +1,5 @@
/* Update REL relocation information at given index.
- Copyright (C) 2000, 2001, 2002 Red Hat, Inc.
@ -852,8 +810,8 @@ src/
{
__libelf_seterrno (ELF_E_INVALID_INDEX);
goto out;
--- elfutils-0.114/libelf/gelf_update_sym.c
+++ elfutils-0.114/libelf/gelf_update_sym.c
--- elfutils-0.115/libelf/gelf_update_sym.c
+++ elfutils-0.115/libelf/gelf_update_sym.c
@@ -1,5 +1,5 @@
/* Update symbol information in symbol table at the given index.
- Copyright (C) 2000, 2001, 2002 Red Hat, Inc.
@ -894,8 +852,8 @@ src/
{
__libelf_seterrno (ELF_E_INVALID_INDEX);
goto out;
--- elfutils-0.114/libelf/gelf_update_syminfo.c
+++ elfutils-0.114/libelf/gelf_update_syminfo.c
--- elfutils-0.115/libelf/gelf_update_syminfo.c
+++ elfutils-0.115/libelf/gelf_update_syminfo.c
@@ -1,5 +1,5 @@
/* Update additional symbol information in symbol table at the given index.
- Copyright (C) 2000, 2001, 2002 Red Hat, Inc.
@ -926,8 +884,8 @@ src/
{
__libelf_seterrno (ELF_E_INVALID_INDEX);
goto out;
--- elfutils-0.114/libelf/gelf_update_symshndx.c
+++ elfutils-0.114/libelf/gelf_update_symshndx.c
--- elfutils-0.115/libelf/gelf_update_symshndx.c
+++ elfutils-0.115/libelf/gelf_update_symshndx.c
@@ -1,6 +1,6 @@
/* Update symbol information and section index in symbol table at the
given index.
@ -969,8 +927,8 @@ src/
{
__libelf_seterrno (ELF_E_INVALID_INDEX);
goto out;
--- elfutils-0.114/libelf/gelf_update_versym.c
+++ elfutils-0.114/libelf/gelf_update_versym.c
--- elfutils-0.115/libelf/gelf_update_versym.c
+++ elfutils-0.115/libelf/gelf_update_versym.c
@@ -1,5 +1,5 @@
/* Update symbol version information.
- Copyright (C) 2001, 2002 Red Hat, Inc.
@ -987,8 +945,8 @@ src/
|| unlikely ((ndx + 1) * sizeof (GElf_Versym) > data_scn->d.d_size))
{
__libelf_seterrno (ELF_E_INVALID_INDEX);
--- elfutils-0.114/libelf/libelfP.h
+++ elfutils-0.114/libelf/libelfP.h
--- elfutils-0.115/libelf/libelfP.h
+++ elfutils-0.115/libelf/libelfP.h
@@ -536,4 +536,13 @@ extern uint32_t __libelf_crc32 (uint32_t
} while (0)
#endif
@ -1003,8 +961,8 @@ src/
+#endif
+
#endif /* libelfP.h */
--- elfutils-0.114/src/elflint.c
+++ elfutils-0.114/src/elflint.c
--- elfutils-0.115/src/elflint.c
+++ elfutils-0.115/src/elflint.c
@@ -111,6 +111,9 @@ static uint32_t shstrndx;
/* Array to count references in section groups. */
static int *scnref;
@ -1231,8 +1189,8 @@ src/
/* ELF64 files often use note section entries in the 32-bit format.
The p_align field is set to 8 in case the 64-bit format is used.
--- elfutils-0.114/src/readelf.c
+++ elfutils-0.114/src/readelf.c
--- elfutils-0.115/src/readelf.c
+++ elfutils-0.115/src/readelf.c
@@ -947,6 +947,7 @@ handle_scngrp (Ebl *ebl, Elf_Scn *scn, G
GElf_Shdr *symshdr;
Elf_Data *symdata;
@ -1468,8 +1426,8 @@ src/
printf (ngettext ("\
\nDWARF section '%s' at offset %#" PRIx64 " contains %zu entry:\n",
"\
--- elfutils-0.114/src/strip.c
+++ elfutils-0.114/src/strip.c
--- elfutils-0.115/src/strip.c
+++ elfutils-0.115/src/strip.c
@@ -400,6 +400,7 @@ handle_elf (int fd, Elf *elf, const char
Elf_Data debuglink_crc_data;
bool any_symtab_changes = false;

View File

@ -1,4 +1,4 @@
%define version 0.114
%define version 0.115
%define release 1
%define gpl 0
@ -190,6 +190,7 @@ rm -rf ${RPM_BUILD_ROOT}
%{_bindir}/eu-ranlib
%{_bindir}/eu-readelf
%{_bindir}/eu-size
%{_bindir}/eu-strings
%{_bindir}/eu-strip
%if !%{gpl}
#%{_bindir}/eu-ld
@ -235,6 +236,13 @@ rm -rf ${RPM_BUILD_ROOT}
%{_libdir}/libelf.so
%changelog
* Mon Sep 5 2005 Roland McGrath <roland@redhat.com> - 0.115-1
- update to 0.115
- New program eu-strings.
- libdw: New function dwarf_getscopes_die.
- libelf: speed-ups of non-mmap reading.
- Implement --enable-gcov option for configure.
* Wed Aug 24 2005 Roland McGrath <roland@redhat.com> - 0.114-1
- update to 0.114
- new program eu-ranlib