svn commit: r296467 - head/sys/kern
Alexey Dokuchaev
danfe at freebsd.org
Mon Jun 3 14:20:51 UTC 2019
On Mon, Mar 07, 2016 at 06:44:07PM +0000, Konstantin Belousov wrote:
> New Revision: 296467
> URL: https://svnweb.freebsd.org/changeset/base/296467
>
> Log:
> Convert all panics from the link_elf_obj kernel linker for object
> files format into printfs and errors to caller. Some leaks of
> resources are there, but the same leaks are present in other error
> pathes. With the change, the kernel at least boots even when module
> with unexpected or corrupted ELF structure is preloaded.
>
> Modified: head/sys/kern/link_elf_obj.c
> ...
> @@ -634,8 +645,11 @@ link_elf_load_file(linker_class_t cls, c
> ef->relatab = malloc(ef->nrelatab * sizeof(*ef->relatab),
> M_LINKER, M_WAITOK | M_ZERO);
>
> - if (symtabindex == -1)
> - panic("lost symbol table index");
> + if (symtabindex == -1) {
> + link_elf_error(filename, "lost symbol table index");
> + error = ENOEXEC;
> + goto out;
> + }
> /* Allocate space for and load the symbol table */
> ef->ddbsymcnt = shdr[symtabindex].sh_size / sizeof(Elf_Sym);
> ef->ddbsymtab = malloc(shdr[symtabindex].sh_size, M_LINKER, M_WAITOK);
> @@ -650,8 +664,11 @@ link_elf_load_file(linker_class_t cls, c
> goto out;
> }
>
> - if (symstrindex == -1)
> - panic("lost symbol string index");
> + if (symstrindex == -1) {
> + link_elf_error(filename, "lost symbol string index");
> + error = ENOEXEC;
> + goto out;
> + }
PVS Studio reports: /usr/src/sys/kern/link_elf_obj.c:717:1: warning: V547
Expression 'symstrindex == - 1' is always false.
Original panic()s were added by peter@ in r129362 (CC'ed). Could one of
you guys take a look? Thanks,
./danfe
More information about the svn-src-head
mailing list