any comments on this change to the ngrep port? - drop privs to a new _ngrep user rather than nobody, - chroot to /var/empty, - support pppoe, - autoconf surgery (functional rather than pretty) to use a version of pcre from the century of the fruitbat, - fix license marker, regen plist
for those who don't know it, here's pkg/DESCR: ngrep strives to provide most of GNU grep's common features, applying them to the network layer. ngrep is a pcap-aware tool that will allow you to specify extended regular expressions to match against data payloads of packets. It currently recognizes TCP and UDP across ethernet, ppp and slip interfaces, and understands bpf filter logic in the same fashion as more common packet sniffing tools, like tcpdump and snoop. Index: Makefile =================================================================== RCS file: /cvs/ports/net/ngrep/Makefile,v retrieving revision 1.27 diff -N -u -p Makefile --- Makefile 15 Sep 2007 22:36:56 -0000 1.27 +++ Makefile 26 Mar 2009 22:32:02 -0000 @@ -3,20 +3,22 @@ COMMENT= network grep DISTNAME= ngrep-1.45 -PKGNAME= ${DISTNAME}p0 +PKGNAME= ${DISTNAME}p1 CATEGORIES= net MASTER_SITES= ${MASTER_SITE_SOURCEFORGE:=ngrep/} EXTRACT_SUFX= .tar.bz2 HOMEPAGE= http://ngrep.sourceforge.net/ -# GPL +# custom BSD-like PERMIT_PACKAGE_CDROM= Yes PERMIT_PACKAGE_FTP= Yes PERMIT_DISTFILES_CDROM= Yes PERMIT_DISTFILES_FTP= Yes -WANTLIB= c pcap +WANTLIB= c pcap +LIB_DEPENDS= pcre::devel/pcre + NO_REGRESS= Yes USE_GMAKE= Yes @@ -24,6 +26,9 @@ USE_LIBTOOL= Yes AUTOCONF_VERSION= 2.60 CONFIGURE_STYLE= autoconf no-autoheader CONFIGURE_ARGS+= --enable-ipv6 \ - --enable-pcre + --enable-pcre \ + --with-dropprivs-user=_ngrep +CONFIGURE_ENV= CFLAGS="${CFLAGS} -I${LOCALBASE}/include" \ + LDFLAGS=-L${LOCALBASE}/lib .include <bsd.port.mk> Index: patches/patch-Makefile_in =================================================================== RCS file: /cvs/ports/net/ngrep/patches/patch-Makefile_in,v retrieving revision 1.3 diff -N -u -p patches/patch-Makefile_in --- patches/patch-Makefile_in 23 Jul 2005 19:41:21 -0000 1.3 +++ patches/patch-Makefile_in 26 Mar 2009 22:32:02 -0000 @@ -1,7 +1,16 @@ ---- Makefile.in.orig Thu Jun 30 13:08:14 2005 -+++ Makefile.in Fri Jul 22 20:20:25 2005 -@@ -25,9 +25,9 @@ exec_prefix = @exec_prefix@ +--- Makefile.in.orig Tue Nov 28 13:35:37 2006 ++++ Makefile.in Thu Mar 26 22:14:15 2009 +@@ -11,7 +11,7 @@ cfla...@cflags@ -...@os@ @DEFS@ @EXTRA_DEFINES@ + includes...@srcdir@ @PCAP_INCLUDE@ @EXTRA_INCLUDES@ + ldfla...@ldflags@ @PCAP_LINK@ +-LIBS=-lpcap @EXTRA_LIBS@ ++li...@libs@ @EXTRA_LIBS@ + + stripfl...@stripflag@ + +@@ -25,14 +25,14 @@ exec_prefix = @exec_prefix@ + bindir = $(prefix)/bin datadir = $(prefix)/share -mandir = $(datadir)/man @@ -12,3 +21,29 @@ MANDIR_INSTALL = $(mandir)/man8 INSTALL = ./install-sh + +-regex_d...@regex_dir@ ++#regex_d...@regex_dir@ + regex_ob...@regex_objs@ + + +@@ -55,15 +55,15 @@ install: $(TARGET) + $(CC) $(CFLAGS) $(INCLUDES) -g -c $< + + clean: +- make -C $(REGEX_DIR) clean ++ #make -C $(REGEX_DIR) clean + rm -f *~ $(OBJS) $(REGEX_OBJS) $(TARGET) $(TARGET).static + + distclean: clean +- make -C $(REGEX_DIR) distclean ++ #make -C $(REGEX_DIR) distclean + rm -f config.status config.cache config.log config.h Makefile + +-$(REGEX_OBJS): $(REGEX_OBJS:.o=.c) $(REGEX_DIR)/*.h +- $(MAKE) $(MAKEFLAGS) -C $(REGEX_DIR) $(notdir $(REGEX_OBJS)) ++#$(REGEX_OBJS): $(REGEX_OBJS:.o=.c) $(REGEX_DIR)/*.h ++# $(MAKE) $(MAKEFLAGS) -C $(REGEX_DIR) $(notdir $(REGEX_OBJS)) + + $(OBJS): Makefile ngrep.c ngrep.h + Index: patches/patch-configure_in =================================================================== RCS file: /cvs/ports/net/ngrep/patches/patch-configure_in,v retrieving revision 1.2 diff -N -u -p patches/patch-configure_in --- patches/patch-configure_in 23 Jul 2005 19:41:21 -0000 1.2 +++ patches/patch-configure_in 26 Mar 2009 22:32:02 -0000 @@ -1,9 +1,61 @@ ---- configure.in.orig Thu Jun 30 13:22:15 2005 -+++ configure.in Fri Jul 22 20:01:45 2005 -@@ -196,18 +196,6 @@ unsigned short bar = foo.source; +--- configure.in.orig Wed Nov 15 03:43:56 2006 ++++ configure.in Thu Mar 26 22:07:10 2009 +@@ -111,47 +111,12 @@ else + fi + + +-dnl +-dnl Configure the regular expression library. +-dnl ++AC_CHECK_LIB(pcre, pcre_compile,,echo need pcre lib; exit) ++REGEX_OBJS='' ++USE_PCRE="1" + +-AC_ARG_ENABLE(pcre, +-[ --enable-pcre use PCRE instead of GNU regex], +-[ +- use_pcre="$enableval" +-], +-[ +- use_pcre="no" +-]) +- +-if test $use_pcre = yes; then +- +- echo +- echo 'Configuring Perl-Compatible Regular Expression (PCRE) library ...' +- echo +- +- REGEX_DIR='pcre-5.0' +- REGEX_OBJS="$REGEX_DIR/pcre.o $REGEX_DIR/study.o" +- USE_PCRE="1" +- +-else +- +- echo +- echo 'Configuring GNU Regular Expression library ...' +- echo +- +- REGEX_DIR='regex-0.12' +- REGEX_OBJS="$REGEX_DIR/regex.o" +- USE_PCRE="0" +- +-fi +- +-( cd $REGEX_DIR && ./configure ) +- +-AC_SUBST(REGEX_DIR) + AC_SUBST(REGEX_OBJS) + +- + echo + echo 'Configuring Network Grep (ngrep) ...' + echo +@@ -193,18 +158,6 @@ unsigned short bar = foo.source; + *bsd*) AC_SUBST(OS, BSD) - +- - if test "$USE_PCAP_RESTART" = "0"; then - - AC_MSG_WARN( @@ -15,7 +67,6 @@ - sleep 3 - - fi -- + ;; - *solaris*) Index: patches/patch-ngrep_c =================================================================== RCS file: /cvs/ports/net/ngrep/patches/Attic/patch-ngrep_c,v diff -N -u -p patches/patch-ngrep_c --- /dev/null 26 Mar 2009 22:32:02 -0000 +++ patches/patch-ngrep_c 26 Mar 2009 22:32:02 -0000 @@ -0,0 +1,38 @@ +$OpenBSD$ +--- ngrep.c.orig Tue Nov 28 13:38:43 2006 ++++ ngrep.c Thu Mar 26 22:31:23 2009 +@@ -92,7 +92,7 @@ + #endif + + #if USE_PCRE +-#include "pcre-5.0/pcre.h" ++#include "pcre.h" + #else + #include "regex-0.12/regex.h" + #endif +@@ -549,6 +549,10 @@ int main(int argc, char **argv) { + link_offset = PPPHDR_SIZE; + break; + ++ case DLT_PPP_ETHER: ++ link_offset = PPPOEHDR_SIZE; ++ break; ++ + #if HAVE_DLT_LOOP + case DLT_LOOP: + #endif +@@ -1197,6 +1201,14 @@ void drop_privs(void) { + perror("attempt to drop privileges failed"); + clean_exit(-1); + } ++ if (chroot("/var/empty") == -1) { ++ perror("attempt to drop privileges failed: chroot failed"); ++ clean_exit(-1); ++ } ++ if (chdir("/") == -1) { ++ perror("attempt to drop privileges failed: chdir failed"); ++ clean_exit(-1); ++ } + + if (((getgid() != newgid) && (setgid(newgid) == -1)) || + ((getegid() != newgid) && (setegid(newgid) == -1)) || Index: patches/patch-ngrep_h =================================================================== RCS file: patches/patch-ngrep_h diff -N -u -p patches/patch-ngrep_h --- /dev/null 26 Mar 2009 22:32:02 -0000 +++ patches/patch-ngrep_h 26 Mar 2009 22:32:02 -0000 @@ -0,0 +1,11 @@ +$OpenBSD$ +--- ngrep.h.orig Mon Feb 23 17:19:58 2009 ++++ ngrep.h Mon Feb 23 17:20:00 2009 +@@ -17,6 +17,7 @@ + #define ETHHDR_SIZE 14 + #define TOKENRING_SIZE 22 + #define PPPHDR_SIZE 4 ++#define PPPOEHDR_SIZE 8 + #define SLIPHDR_SIZE 16 + #define RAWHDR_SIZE 0 + #define LOOPHDR_SIZE 4 Index: patches/patch-regex-0_12_Makefile_in =================================================================== RCS file: /cvs/ports/net/ngrep/patches/patch-regex-0_12_Makefile_in,v retrieving revision 1.3 diff -N -u -p patches/patch-regex-0_12_Makefile_in --- patches/patch-regex-0_12_Makefile_in 23 Jul 2005 19:41:21 -0000 1.3 +++ /dev/null 1 Nov 2007 14:18:14 -0000 @@ -1,11 +0,0 @@ ---- regex-0.12/Makefile.in.orig Sat Sep 25 13:04:26 2004 -+++ regex-0.12/Makefile.in Fri Jul 22 17:02:42 2005 -@@ -29,7 +29,7 @@ version = 0.12 - CPPFLAGS = - - # Likewise, you can override CFLAGS to optimize, use -Wall, etc. --CFLAGS = -g -+#CFLAGS = -g - - # Ditto for LDFLAGS and LOADLIBES. - LDFLAGS = Index: pkg/PLIST =================================================================== RCS file: /cvs/ports/net/ngrep/pkg/PLIST,v retrieving revision 1.5 diff -N -u -p pkg/PLIST --- pkg/PLIST 15 Sep 2004 18:17:42 -0000 1.5 +++ pkg/PLIST 26 Mar 2009 22:32:02 -0000 @@ -1,3 +1,5 @@ @comment $OpenBSD: PLIST,v 1.5 2004/09/15 18:17:42 espie Exp $ +...@newgroup _ngrep:622 +...@newuser _ngrep:622:_ngrep::ngrep user:/nonexistent:/sbin/nologin @man man/man8/ngrep.8 -sbin/ngrep +...@bin sbin/ngrep