From owner-freebsd-bugs@FreeBSD.ORG Thu Dec 18 20:57:36 2014 Return-Path: Delivered-To: freebsd-bugs@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 27D07A7 for ; Thu, 18 Dec 2014 20:57:36 +0000 (UTC) Received: from kenobi.freebsd.org (kenobi.freebsd.org [IPv6:2001:1900:2254:206a::16:76]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id E978F221D for ; Thu, 18 Dec 2014 20:57:35 +0000 (UTC) Received: from bugs.freebsd.org ([127.0.1.118]) by kenobi.freebsd.org (8.14.9/8.14.9) with ESMTP id sBIKvZY7077869 for ; Thu, 18 Dec 2014 20:57:35 GMT (envelope-from bugzilla-noreply@freebsd.org) 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 Date: Thu, 18 Dec 2014 20:57:35 +0000 X-Bugzilla-Reason: AssignedTo X-Bugzilla-Type: new X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: Base System X-Bugzilla-Component: bin X-Bugzilla-Version: 11.0-CURRENT X-Bugzilla-Keywords: X-Bugzilla-Severity: Affects Many People X-Bugzilla-Who: code.jpe@gmail.com X-Bugzilla-Status: New X-Bugzilla-Priority: --- X-Bugzilla-Assigned-To: freebsd-bugs@FreeBSD.org X-Bugzilla-Target-Milestone: --- X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: bug_id short_desc product version rep_platform op_sys bug_status bug_severity priority component assigned_to reporter attachments.created Message-ID: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit X-Bugzilla-URL: https://bugs.freebsd.org/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 X-BeenThere: freebsd-bugs@freebsd.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: Bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 18 Dec 2014 20:57:36 -0000 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.