DragonFlyBSD Kernel Audit
DF-2720 / fix.diff
← back to finding ↓ download raw
--- a/sys/kern/imgact_elf.c
+++ b/sys/kern/imgact_elf.c
@@ -271,7 +271,8 @@
 	 * While I'm here, might as well check for something else that
 	 * is invalid: filsz cannot be greater than memsz.
 	 */
-	if ((off_t)filsz + offset > vp->v_filesize || filsz > memsz) {
+	if (offset + filsz < offset || offset + filsz > vp->v_filesize ||
+	    filsz > memsz) {
 		uprintf("elf_load_section: truncated ELF file\n");
 		vm_object_drop(object);
 		return (ENOEXEC);