struct emul's e_arglen member is expected to count in units of
authorguenther <guenther@openbsd.org>
Sat, 24 Jul 2010 09:50:45 +0000 (09:50 +0000)
committerguenther <guenther@openbsd.org>
Sat, 24 Jul 2010 09:50:45 +0000 (09:50 +0000)
sizeof(char *), not in bytes, so we've been allocating and copying around
four or eight times as many bytes as we needed to

ok kettenis@ deraadt@

sys/kern/exec_elf.c

index 7c827e0..e962f9f 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: exec_elf.c,v 1.74 2010/06/29 00:28:14 tedu Exp $      */
+/*     $OpenBSD: exec_elf.c,v 1.75 2010/07/24 09:50:45 guenther Exp $  */
 
 /*
  * Copyright (c) 1996 Per Fogelstrom
@@ -159,7 +159,7 @@ struct emul ELFNAMEEND(emul) = {
 #else
        NULL,
 #endif
-       sizeof (AuxInfo) * ELF_AUX_ENTRIES,
+       (sizeof(AuxInfo) * ELF_AUX_ENTRIES / sizeof(char *)),
        ELFNAME(copyargs),
        setregs,
        ELFNAME2(exec,fixup),