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>