Date: Thu, 18 Dec 2014 20:57:35 +0000 From: bugzilla-noreply@freebsd.org To: freebsd-bugs@FreeBSD.org Subject: [Bug 196110] New: [patch] procstat shows wrong stack nx information in ELF auxv mode Message-ID: <bug-196110-8@https.bugs.freebsd.org/bugzilla/>
next in thread | raw e-mail | index | archive | help
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=196110 Bug ID: 196110 Summary: [patch] procstat shows wrong stack nx information in ELF auxv mode Product: Base System Version: 11.0-CURRENT Hardware: amd64 OS: Any Status: New Severity: Affects Many People Priority: --- Component: bin Assignee: freebsd-bugs@FreeBSD.org Reporter: code.jpe@gmail.com Created attachment 150736 --> https://bugs.freebsd.org/bugzilla/attachment.cgi?id=150736&action=edit Patch for procstat_auxv.c The ELF auxiliary vector displayed by `procstat -x` contains information about whether or not the stack for that process is executable or not. This information is currently reversed, showing executable when nxstack is enabled. It can be reproduced quite easily: # sysctl kern.elf64.nxstack kern.elf64.nxstack: 1 # procstat -x $$ | grep AT_STACKPROT 1471 csh AT_STACKPROT EXECUTABLE After disabling nxstack, new processes show nonexecutable. # sysctl kern.elf64.nxstack=0 kern.elf64.nxstack: 1 -> 0 # sh -c 'procstat -x $$ | grep AT_STACKPROT' 1477 sh AT_STACKPROT NONEXECUTABLE Looking at the procstat code, the displayed string labels are reversed for the check. The bitwise and will return !0 if the executable bit is set. if ((auxv[i].a_un.a_val & VM_PROT_EXECUTE) != 0) PRINT(AT_STACKPROT, %s, "NONEXECUTABLE"); else PRINT(AT_STACKPROT, %s, "EXECUTABLE"); break; Attached is a simple patch to switch the labels. -- You are receiving this mail because: You are the assignee for the bug.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?bug-196110-8>