- 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.

PR:		bin/175491
Approved by:	emaste (co-mentor)
MFC after:	1 week
This commit is contained in:
Mark Johnston 2013-02-19 03:23:13 +00:00
parent bab63de286
commit 9be24c38b8
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=246978
2 changed files with 24 additions and 3 deletions

View file

@ -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);

View file

@ -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 descriptor
.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 ,