Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 3 Mar 2013 19:02:23 +0000 (UTC)
From:      Mark Johnston <markj@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org
Subject:   svn commit: r247724 - stable/9/lib/libelf
Message-ID:  <201303031902.r23J2N58048556@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: markj
Date: Sun Mar  3 19:02:23 2013
New Revision: 247724
URL: http://svnweb.freebsd.org/changeset/base/247724

Log:
  MFC r246978:
    - Make sure to set an error code when trying to obtain a data descriptor for
      a section of type SHT_NULL.
    - Update the man page to reflect the fact that elf_getdata() and
      elf_rawdata() may return with an error of ELF_E_SECTION.
  
  Approved by:	rstone (co-mentor)

Modified:
  stable/9/lib/libelf/elf_data.c
  stable/9/lib/libelf/elf_getdata.3
Directory Properties:
  stable/9/lib/libelf/   (props changed)

Modified: stable/9/lib/libelf/elf_data.c
==============================================================================
--- stable/9/lib/libelf/elf_data.c	Sun Mar  3 19:02:11 2013	(r247723)
+++ stable/9/lib/libelf/elf_data.c	Sun Mar  3 19:02:23 2013	(r247724)
@@ -78,8 +78,10 @@ elf_getdata(Elf_Scn *s, Elf_Data *d)
 		sh_align  = s->s_shdr.s_shdr64.sh_addralign;
 	}
 
-	if (sh_type == SHT_NULL)
+	if (sh_type == SHT_NULL) {
+		LIBELF_SET_ERROR(SECTION, 0);
 		return (NULL);
+	}
 
 	if ((elftype = _libelf_xlate_shtype(sh_type)) < ELF_T_FIRST ||
 	    elftype > ELF_T_LAST || (sh_type != SHT_NOBITS &&
@@ -219,8 +221,10 @@ elf_rawdata(Elf_Scn *s, Elf_Data *d)
 		sh_align  = s->s_shdr.s_shdr64.sh_addralign;
 	}
 
-	if (sh_type == SHT_NULL)
+	if (sh_type == SHT_NULL) {
+		LIBELF_SET_ERROR(SECTION, 0);
 		return (NULL);
+	}
 
 	if ((d = _libelf_allocate_data(s)) == NULL)
 		return (NULL);

Modified: stable/9/lib/libelf/elf_getdata.3
==============================================================================
--- stable/9/lib/libelf/elf_getdata.3	Sun Mar  3 19:02:11 2013	(r247723)
+++ stable/9/lib/libelf/elf_getdata.3	Sun Mar  3 19:02:23 2013	(r247724)
@@ -23,7 +23,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd January 26, 2011
+.Dd February 18, 2013
 .Dt ELF_GETDATA 3
 .Os
 .Sh NAME
@@ -186,6 +186,23 @@ was not associated with section descript
 .Ar scn .
 .It Bq Er ELF_E_RESOURCE
 An out of memory condition was detected.
+.It Bq Er ELF_E_SECTION
+Section
+.Ar scn
+had type
+.Dv SHT_NULL .
+.It Bq Er ELF_E_SECTION
+The type of the section
+.Ar scn
+was not recognized by the library.
+.It Bq Er ELF_E_SECTION
+The size of the section
+.Ar scn
+is not a multiple of the file size for its section type.
+.It Bq Er ELF_E_SECTION
+The file offset for section
+.Ar scn
+is incorrect.
 .El
 .Sh SEE ALSO
 .Xr elf 3 ,



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201303031902.r23J2N58048556>