DragonFlyBSD Kernel Audit
DF-0062 / fix.diff
← back to finding ↓ download raw
diff --git a/sys/kern/link_elf.c b/sys/kern/link_elf.c
--- a/sys/kern/link_elf.c
+++ b/sys/kern/link_elf.c
@@ -626,6 +626,9 @@
     ef->ddbsymtab = (const Elf_Sym *)ef->symbase;
     ef->ddbstrcnt = strcnt;
     ef->ddbstrtab = ef->strbase;
+    /* NUL-terminate the in-kernel strtab so strcmp() can't walk off. */
+    if (strcnt > 0)
+	((char *)ef->strbase)[strcnt - 1] = 0;
 
 nosyms: