Module Name:    src
Committed By:   maxv
Date:           Mon Nov 13 21:32:21 UTC 2017

Modified Files:
        src/sys/arch/amd64/stand/prekern: elf.c
        src/sys/lib/libsa: loadfile_elf32.c

Log Message:
Don't process ELF sections that don't have the ALLOC flag set.

NOTE: you need to update both the prekern and the bootloader after this
change.


To generate a diff of this commit:
cvs rdiff -u -r1.10 -r1.11 src/sys/arch/amd64/stand/prekern/elf.c
cvs rdiff -u -r1.49 -r1.50 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/arch/amd64/stand/prekern/elf.c
diff -u src/sys/arch/amd64/stand/prekern/elf.c:1.10 src/sys/arch/amd64/stand/prekern/elf.c:1.11
--- src/sys/arch/amd64/stand/prekern/elf.c:1.10	Mon Nov 13 21:14:04 2017
+++ src/sys/arch/amd64/stand/prekern/elf.c	Mon Nov 13 21:32:21 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: elf.c,v 1.10 2017/11/13 21:14:04 maxv Exp $	*/
+/*	$NetBSD: elf.c,v 1.11 2017/11/13 21:32:21 maxv Exp $	*/
 
 /*
  * Copyright (c) 2017 The NetBSD Foundation, Inc. All rights reserved.
@@ -272,6 +272,9 @@ elf_map_sections()
 	for (i = 0; i < eif.ehdr->e_shnum; i++) {
 		shdr = &eif.shdr[i];
 
+		if (!(shdr->sh_flags & SHF_ALLOC)) {
+			continue;
+		}
 		if (shdr->sh_type != SHT_NOBITS &&
 		    shdr->sh_type != SHT_PROGBITS) {
 			continue;

Index: src/sys/lib/libsa/loadfile_elf32.c
diff -u src/sys/lib/libsa/loadfile_elf32.c:1.49 src/sys/lib/libsa/loadfile_elf32.c:1.50
--- src/sys/lib/libsa/loadfile_elf32.c:1.49	Mon Nov 13 20:21:10 2017
+++ src/sys/lib/libsa/loadfile_elf32.c	Mon Nov 13 21:32:21 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: loadfile_elf32.c,v 1.49 2017/11/13 20:21:10 maxv Exp $ */
+/* $NetBSD: loadfile_elf32.c,v 1.50 2017/11/13 21:32:21 maxv Exp $ */
 
 /*
  * Copyright (c) 1997, 2008, 2017 The NetBSD Foundation, Inc.
@@ -390,6 +390,10 @@ ELFNAMEEND(loadfile_dynamic)(int fd, Elf
 		addr = maxp;
 		size = (size_t)shdr[i].sh_size;
 
+		if (!(shdr[i].sh_flags & SHF_ALLOC)) {
+			continue;
+		}
+
 		loaded = 0;
 		switch (shdr[i].sh_type) {
 		case SHT_NOBITS:

Reply via email to