Module Name: src
Committed By: uwe
Date: Mon Apr 17 18:06:30 UTC 2017
Modified Files:
src/sys/lib/libsa: loadfile_elf32.c
Log Message:
Section at index 0 is SHN_UNDEF. When searching for symbol sections
skip it and start with index 1.
To generate a diff of this commit:
cvs rdiff -u -r1.37 -r1.38 src/sys/lib/libsa/loadfile_elf32.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/lib/libsa/loadfile_elf32.c
diff -u src/sys/lib/libsa/loadfile_elf32.c:1.37 src/sys/lib/libsa/loadfile_elf32.c:1.38
--- src/sys/lib/libsa/loadfile_elf32.c:1.37 Mon Apr 17 17:44:48 2017
+++ src/sys/lib/libsa/loadfile_elf32.c Mon Apr 17 18:06:30 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: loadfile_elf32.c,v 1.37 2017/04/17 17:44:48 uwe Exp $ */
+/* $NetBSD: loadfile_elf32.c,v 1.38 2017/04/17 18:06:30 uwe Exp $ */
/*
* Copyright (c) 1997, 2008 The NetBSD Foundation, Inc.
@@ -432,7 +432,7 @@ ELFNAMEEND(loadfile)(int fd, Elf_Ehdr *e
/*
* First load the section names section.
*/
- if (boot_load_ctf && (elf->e_shstrndx != 0)) {
+ if (boot_load_ctf && (elf->e_shstrndx != SHN_UNDEF)) {
Elf_Off shstroff = shp[elf->e_shstrndx].sh_offset;
shstrsz = shp[elf->e_shstrndx].sh_size;
if (flags & LOAD_SYM) {
@@ -473,7 +473,7 @@ ELFNAMEEND(loadfile)(int fd, Elf_Ehdr *e
* table.
*/
first = 1;
- for (i = 0; i < elf->e_shnum; i++) {
+ for (i = 1; i < elf->e_shnum; i++) {
if (i == elf->e_shstrndx) {
/* already loaded this section */
continue;
@@ -492,7 +492,7 @@ ELFNAMEEND(loadfile)(int fd, Elf_Ehdr *e
shp[i].sh_offset = 0;
break;
case SHT_STRTAB:
- for (j = 0; j < elf->e_shnum; j++)
+ for (j = 1; j < elf->e_shnum; j++)
if (shp[j].sh_type == SHT_SYMTAB &&
shp[j].sh_link == (unsigned int)i)
goto havesym;