Current-Users archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Some pkgsrc/mk/pax.mk suggestions (was: Re: PaX mprotect now on for amd64)



Hello Pierre and tech-pkg@!
(moving the discussion to tech-pkg@ where is more appropriate)

Pierre Pronchery writes:
> I wrote this mini-framework for paxctl(8) in pkgsrc:
> 
> http://git.edgebsd.org/gitweb/?p=edgebsd-pkgsrc.git;a=commitdiff;h=f1354300f9d734202bd0ce49b33d74f455aea9e1
> 
> and addressed some concerns there:
> http://git.edgebsd.org/gitweb/?p=edgebsd-pkgsrc.git;a=commitdiff;h=4ed2e62c4e7416abbf6eba9887cdc5e2c6997c67
> 
> Let me know if I should import it, or about any concerns.
First of all thank you for quickly addressing that and sorry for
the very late review. I will try to share just some ideas about
it!

Unfortunately right now I couldn't come up with a better nomenclature
regarding it. Apart what David suggested... What about a more similar
mechanism also used by src/share/mk (i.e. PAXCTL_FLAGS)? I think
something like that can be used (similar to what we do with several
*_PERMS variables):

 PAXCTL_FLAGS+=	+m bin/frozz

What do you think? (maybe a better name should be decided?)
(maybe we can also abstract the flag usage so that paxctl will be also
OS-agnostic (i.e. it seems that also Linux have it but the syntax is
different), but we will need more nomenclature and I would like to
receive some feedback regarding that)

In pkgsrc/tools/tools.NetBSD.mk we can simplify the recognition of
paxctl via just an `.if exists()'. In this way if other ports will
use PaX features they will already have correct `.note.netbsd.pax'
ELF section.

Another suggestion is to use BUILD_DEFS so that binary package user can
query the paxctl-fied programs in pkgsrc/mk/pax.mk.

For these two suggestions I'll attach possible patches in this email.

Other cosmetic and (not very important) suggestions (mostly for
consistency with other pkgsrc make fragments):

 - I think it's better to not expose TOOLS_PLATFORM.paxctl as a
   user-settable variable and so delete the comment about that in
   pax.mk.
 - _INSTALL_ALL_TARGETS is only used by pkgsrc/mk/install/install.mk but
   not other make files in pkgsrc/mk that depends on post-install.
   I think we can delete them in pax.mk.


Please let me know what you think and/or if I'm missing something!
Thank you for the attention!
Add NOT_PAX_ASLR_SAFE and NOT_PAX_MPROTECT_SAFE to BUILD_DEFS so the
paxctl-fied binaries can be inspected via `pkg_info -Q'

Index: mk/pax.mk
===================================================================
RCS file: /cvsroot/pkgsrc/mk/pax.mk,v
retrieving revision 1.3
diff -u -p -r1.3 pax.mk
--- mk/pax.mk	27 May 2016 08:33:00 -0000	1.3
+++ mk/pax.mk	5 Jul 2016 15:37:39 -0000
@@ -24,6 +24,8 @@ PAXCTL=	${TOOLS_PLATFORM.paxctl}
 .  if !empty(NOT_PAX_ASLR_SAFE)
 _INSTALL_ALL_TARGETS+=		post-install-pax-aslr-binaries
 
+BUILD_DEFS+=	NOT_PAX_ASLR_SAFE
+
 .PHONY: post-install-pax-aslr-binaries
 post-install: post-install-pax-aslr-binaries
 post-install-pax-aslr-binaries:
@@ -37,6 +39,8 @@ post-install-pax-aslr-binaries:
 .  if !empty(NOT_PAX_MPROTECT_SAFE)
 _INSTALL_ALL_TARGETS+=		post-install-pax-mprotect-binaries
 
+BUILD_DEFS+=	NOT_PAX_MPROTECT_SAFE
+
 .PHONY: post-install-pax-mprotect-binaries
 post-install: post-install-pax-mprotect-binaries
 post-install-pax-mprotect-binaries:
Make TOOLS_PLATFORM.paxctl recognition more agnostic

Index: mk/tools/tools.NetBSD.mk
===================================================================
RCS file: /cvsroot/pkgsrc/mk/tools/tools.NetBSD.mk,v
retrieving revision 1.58
diff -u -p -r1.58 tools.NetBSD.mk
--- mk/tools/tools.NetBSD.mk	26 May 2016 16:03:04 -0000	1.58
+++ mk/tools/tools.NetBSD.mk	5 Jul 2016 15:38:15 -0000
@@ -83,8 +83,7 @@ TOOLS_PLATFORM.nroff?=		/usr/bin/nroff
 TOOLS_PLATFORM.openssl?=	/usr/bin/openssl
 TOOLS_PLATFORM.patch?=		/usr/bin/patch
 TOOLS_PLATFORM.pax?=		/bin/pax
-.if empty(MACHINE_PLATFORM:MNetBSD-[^0-3].*-386) || \
-	empty(MACHINE_PLATFORM:MNetBSD-[^0-3].*-x86_64)
+.if exists(/usr/sbin/paxctl)
 TOOLS_PLATFORM.paxctl?=		/usr/sbin/paxctl
 .endif
 TOOLS_PLATFORM.printf?=		/usr/bin/printf


Home | Main Index | Thread Index | Old Index