Skip site navigation (1)Skip section navigation (2)
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>