untrusted comment: signature from openbsd 6.2 base secret key
RWRVWzAMgtyg7lk3Sa8qwn7lZ91Fznk18v3jfrW7FsEdfzB1lGwH/+Fj6ldLQcq7rBEEEmNUOEx9DKjbCNrPWB905blMu0NilQw=

OpenBSD 6.2 errata 018, July 25, 2018:

A regular user could trigger a kernel panic by executing an invalid
ELF binary.

Apply by doing:
   signify -Vep /etc/signify/openbsd-62-base.pub -x 018_execsize.patch.sig \
       -m - | (cd /usr/src && patch -p0)

And then rebuild and install the kernel:
   KK=`sysctl -n kern.osversion | cut -d# -f1`
   cd /usr/src/sys/arch/`machine`/compile/$KK
   make obj
   make config
   make
   make install

Index: sys/kern/exec_elf.c
===================================================================
RCS file: /cvs/src/sys/kern/exec_elf.c,v
retrieving revision 1.141
diff -u -p -r1.141 exec_elf.c
--- sys/kern/exec_elf.c 7 Sep 2017 11:32:14 -0000       1.141
+++ sys/kern/exec_elf.c 23 Jul 2018 12:11:10 -0000
@@ -366,8 +366,11 @@ elf_load_file(struct proc *p, char *path

       for (i = 0; i < eh.e_phnum; i++) {
               if (ph[i].p_type == PT_LOAD) {
-                       if (ph[i].p_filesz > ph[i].p_memsz)
+                       if (ph[i].p_filesz > ph[i].p_memsz ||
+                           ph[i].p_memsz == 0) {
+                               error = EINVAL;
                               goto bad1;
+                       }
                       loadmap[idx].vaddr = trunc_page(ph[i].p_vaddr);
                       loadmap[idx].memsz = round_page (ph[i].p_vaddr +
                           ph[i].p_memsz - loadmap[idx].vaddr);
@@ -562,7 +565,8 @@ exec_elf_makecmds(struct proc *p, struct
                       if (interp[pp->p_filesz - 1] != '\0')
                               goto bad;
               } else if (pp->p_type == PT_LOAD) {
-                       if (pp->p_filesz > pp->p_memsz) {
+                       if (pp->p_filesz > pp->p_memsz ||
+                           pp->p_memsz == 0) {
                               error = EINVAL;
                               goto bad;
                       }