From e8c5235a66bed66e68d04009e0b874f14e0a98fc Mon Sep 17 00:00:00 2001 From: Cy Schubert Date: Tue, 15 Dec 2009 07:17:46 +0000 Subject: [PATCH] Welcome sudosh3 to the ports collection. --- security/sudosh3/Makefile | 17 ++- security/sudosh3/distinfo | 6 +- security/sudosh3/files/patch-src-Makefile.am | 10 ++ security/sudosh3/files/patch-src::Makefile.in | 75 ++++++++-- security/sudosh3/files/patch-src::sudosh.c | 135 ++++++++---------- 5 files changed, 150 insertions(+), 93 deletions(-) create mode 100644 security/sudosh3/files/patch-src-Makefile.am diff --git a/security/sudosh3/Makefile b/security/sudosh3/Makefile index dbd73b981a5c..2b7fd90ba7ad 100644 --- a/security/sudosh3/Makefile +++ b/security/sudosh3/Makefile @@ -5,18 +5,16 @@ # $FreeBSD$ # -PORTNAME= sudosh2 -PORTVERSION= 1.0.2 +PORTNAME= sudosh3 +PORTVERSION= 3.2.0 CATEGORIES= security -MASTER_SITES= SF/${PORTNAME}/${PORTNAME}/v${PORTVERSION} +MASTER_SITES= SF/${PORTNAME} DISTNAME= ${PORTNAME}-${PORTVERSION} -EXTRACT_SUFX= .tbz2 MAINTAINER= cy@FreeBSD.org -COMMENT= Second version of the sudo shell +COMMENT= Third version of the sudo shell CONFLICTS= sudosh-* -USE_BZIP2= yes RUN_DEPENDS= sudo:${PORTSDIR}/security/sudo GNU_CONFIGURE= yes @@ -35,4 +33,9 @@ MAN1= sudosh.1 MAN5= sudosh.conf.5 MAN8= sudosh-replay.8 -.include +.include + +post-install: + @${TEST} -f ${PREFIX}/etc/sudosh.conf || ${CP} -p ${PREFIX}/etc/sudosh.conf.sample ${PREFIX}/etc/sudosh.conf + +.include diff --git a/security/sudosh3/distinfo b/security/sudosh3/distinfo index 06d0138b2b69..49d09ecc541c 100644 --- a/security/sudosh3/distinfo +++ b/security/sudosh3/distinfo @@ -1,3 +1,3 @@ -MD5 (sudosh2-1.0.2.tbz2) = 594525a29be7fd328b80f3291eac4aca -SHA256 (sudosh2-1.0.2.tbz2) = 70298502c3f1998118d90b2b5298a6ca2595ebca3e695e7871f68d792d2b3299 -SIZE (sudosh2-1.0.2.tbz2) = 167113 +MD5 (sudosh3-3.2.0.tar.gz) = 73c097d7eec6400a25f10bd121c8e07c +SHA256 (sudosh3-3.2.0.tar.gz) = 8a1099da9a6115db2cf70112aa48600bd056c868e98ac27e80b07bfab4b7b362 +SIZE (sudosh3-3.2.0.tar.gz) = 244867 diff --git a/security/sudosh3/files/patch-src-Makefile.am b/security/sudosh3/files/patch-src-Makefile.am new file mode 100644 index 000000000000..c7a716c5c6bd --- /dev/null +++ b/security/sudosh3/files/patch-src-Makefile.am @@ -0,0 +1,10 @@ +--- src/Makefile.am.orig 2008-01-30 14:55:46.000000000 -0800 ++++ src/Makefile.am 2009-12-14 22:24:48.000000000 -0800 +@@ -8,6 +8,6 @@ + + install-sudosh.conf: + test -z "$(sysconfdir)" || $(mkdir_p) "$(DESTDIR)$(sysconfdir)" +- test -f $(sysconfdir)/sudosh.conf || $(INSTALL) -o 0 -g 0 -m 0444 '$(srcdir)/sudosh.conf' '$(sysconfdir)/sudosh.conf' ++ test -f $(sysconfdir)/sudosh.conf.sample || $(INSTALL) -o 0 -g 0 -m 0444 '$(srcdir)/sudosh.conf' '$(sysconfdir)/sudosh.conf.sample' + + install: install-am install-sudosh.conf diff --git a/security/sudosh3/files/patch-src::Makefile.in b/security/sudosh3/files/patch-src::Makefile.in index 81fcafdbceb1..ef9cefd3e194 100644 --- a/security/sudosh3/files/patch-src::Makefile.in +++ b/security/sudosh3/files/patch-src::Makefile.in @@ -1,11 +1,68 @@ ---- src/Makefile.in.orig Sun Jun 12 19:33:29 2005 -+++ src/Makefile.in Wed Oct 26 06:59:17 2005 -@@ -427,7 +427,8 @@ +--- src/Makefile.in.orig 2008-02-22 13:11:02.000000000 -0800 ++++ src/Makefile.in 2009-12-14 21:26:23.000000000 -0800 +@@ -1,8 +1,8 @@ +-# Makefile.in generated by automake 1.10 from Makefile.am. ++# Makefile.in generated by automake 1.10.1 from Makefile.am. + # @configure_input@ - install-sudosh.conf: - test -z "$(sysconfdir)" || $(mkdir_p) "$(DESTDIR)$(sysconfdir)" - test -f $(sysconfdir)/sudosh.conf || $(INSTALL) -o 0 -g 0 -m 0444 '$(srcdir)/sudosh.conf' '$(sysconfdir)/sudosh.conf' -+ $(INSTALL) -o 0 -g 0 -m 0444 '$(srcdir)/sudosh.conf' '$(sysconfdir)/sudosh.conf.sample' + # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +-# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. ++# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, + # with or without modifications, as long as this notice is preserved. +@@ -55,7 +55,7 @@ + string.$(OBJEXT) parse.$(OBJEXT) util.$(OBJEXT) + sudosh_replay_OBJECTS = $(am_sudosh_replay_OBJECTS) + sudosh_replay_LDADD = $(LDADD) +-DEFAULT_INCLUDES = -I. -I$(top_builddir)@am__isrc@ ++DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) + depcomp = $(SHELL) $(top_srcdir)/depcomp + am__depfiles_maybe = depfiles + COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ +@@ -165,6 +165,7 @@ + target_cpu = @target_cpu@ + target_os = @target_os@ + target_vendor = @target_vendor@ ++top_build_prefix = @top_build_prefix@ + top_builddir = @top_builddir@ + top_srcdir = @top_srcdir@ + sudosh_SOURCES = sudosh.c rand.c parse.c string.c getopt.h struct.h super.h util.c +@@ -268,8 +269,8 @@ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ +- $(AWK) ' { files[$$0] = 1; } \ +- END { for (i in files) print i; }'`; \ ++ $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ ++ END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique + tags: TAGS - install: install-am install-sudosh.conf - # Tell versions [3.59,3.63) of GNU make to not export all variables. +@@ -281,8 +282,8 @@ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ +- $(AWK) ' { files[$$0] = 1; } \ +- END { for (i in files) print i; }'`; \ ++ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ ++ END { if (nonempty) { for (i in files) print i; }; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ +@@ -292,13 +293,12 @@ + CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ +- here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ +- $(AWK) ' { files[$$0] = 1; } \ +- END { for (i in files) print i; }'`; \ ++ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ ++ END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique diff --git a/security/sudosh3/files/patch-src::sudosh.c b/security/sudosh3/files/patch-src::sudosh.c index 0c79a345cfc4..7c920ac547e6 100644 --- a/security/sudosh3/files/patch-src::sudosh.c +++ b/security/sudosh3/files/patch-src::sudosh.c @@ -1,6 +1,6 @@ ---- src/sudosh.c.orig Sun Jun 12 19:35:07 2005 -+++ src/sudosh.c Fri Jan 5 14:14:05 2007 -@@ -28,6 +28,13 @@ +--- src/sudosh.c.orig 2009-11-27 02:19:58.000000000 -0800 ++++ src/sudosh.c 2009-12-14 17:30:23.000000000 -0800 +@@ -27,6 +27,13 @@ #define WRITE(a, b, c) do_write(a, b, c, __FILE__, __LINE__) @@ -11,71 +11,60 @@ +#include +#endif + - static struct termios termorig; - static struct winsize winorig; + typedef enum {false=0, true=1} bool; -@@ -545,19 +552,43 @@ + static struct termios termorig; +@@ -443,12 +450,32 @@ { - char *sname; + char *sname; +#ifdef __FreeBSD__ +#define PTYLEN 16 -+ char sname_area[PTYLEN]; -+ struct termios tt; -+ struct winsize win; ++ char sname_area[PTYLEN]; ++ struct termios tt; ++ struct winsize win; + -+ sname = sname_area; -+ if (tcgetattr(STDIN_FILENO, &tt) == -1) -+ { -+ perror ("tcgetattr"); -+ return -1; -+ } -+ if (ioctl(STDIN_FILENO, TIOCGWINSZ, &win) == -1) -+ { -+ perror ("ioctl"); -+ return -1; -+ } -+ if (openpty(&p->mfd, &p->sfd, sname, &tt, &win) == -1) { ++ sname = sname_area; ++ if (tcgetattr(STDIN_FILENO, &tt) == -1) { ++ perror ("tcgetattr"); ++ return -1; ++ } ++ if (ioctl(STDIN_FILENO, TIOCGWINSZ, &win) == -1) { ++ perror ("ioctl"); ++ return -1; ++ } ++ if (openpty(&p->mfd, &p->sfd, sname, &tt, &win) == -1) { +#else - if ((p->mfd = open ("/dev/ptmx", O_RDWR)) == -1) - { - if ((p->mfd = open ("/dev/ptc", O_RDWR)) == -1) - { + if ((p->mfd = open ("/dev/ptmx", O_RDWR)) == -1) { + + if ((p->mfd = open ("/dev/ptc", O_RDWR)) == -1) { +#endif - perror ("Cannot open cloning master pty"); - return -1; + perror ("Cannot open cloning master pty"); + return -1; +#ifndef __FreeBSD__ + } ++#endif } -+#endif - } -+#if !defined(__FreeBSD_version) || (defined(__FreeBSD_version) && __FreeBSD_version >= 500000) - (void) unlockpt (p->mfd); - (void) grantpt (p->mfd); - - sname = (char *) ptsname (p->mfd); -+#endif - - if ((p->sfd = open (sname, O_RDWR)) == -1) - { -@@ -619,9 +650,14 @@ - for (i = 3; i < 100; ++i) - close (i); + (void) unlockpt (p->mfd); +@@ -515,9 +542,14 @@ + for (i = 3; i < 100; ++i) + close (i); +#ifdef __FreeBSD__ -+ (void) tcsetattr(0, TCSADRAIN, &termorig); -+ (void) login_tty(pst->sfd); ++ (void) tcsetattr(0, TCSADRAIN, &termorig); ++ (void) login_tty(pst->sfd); +#else #ifdef TCSETS - (void) ioctl (0, TCSETS, &termorig); + (void) ioctl (0, TCSETS, &termorig); #endif +#endif - (void) ioctl (0, TIOCSWINSZ, &winorig); + (void) ioctl (0, TIOCSWINSZ, &winorig); - setuid (getuid ()); -@@ -663,6 +699,13 @@ + setuid (getuid ()); +@@ -671,12 +703,20 @@ { - static struct termios termnew; + static struct termios termnew; +#ifdef __FreeBSD__ + if (tcgetattr(ttyfd, &termorig) == -1) @@ -85,45 +74,43 @@ + } +#else #ifdef TCGETS - if (ioctl (ttyfd, TCGETS, &termorig) == -1) - { -@@ -670,6 +713,7 @@ - exit (EXIT_FAILURE); - } + if (ioctl (ttyfd, TCGETS, &termorig) == -1) { + perror ("ioctl TCGETS failed"); + exit (EXIT_FAILURE); + } #endif +#endif - if (ioctl (ttyfd, TIOCGWINSZ, &winorig) == -1) - { -@@ -677,6 +721,11 @@ - exit (EXIT_FAILURE); - } + if (ioctl (ttyfd, TIOCGWINSZ, &winorig) == -1) { + // perror ("ioctl TIOCGWINSZ failed"); +@@ -685,6 +725,11 @@ + winorig.ws_col = 80; + } +#ifdef __FreeBSD__ -+ (void) cfmakeraw(&termnew); -+ termnew.c_lflag &= ~ECHO; -+ (void) tcsetattr(ttyfd, TCSAFLUSH, &termnew); ++ (void) cfmakeraw(&termnew); ++ termnew.c_lflag &= ~ECHO; ++ (void) tcsetattr(ttyfd, TCSAFLUSH, &termnew); +#else - termnew.c_cc[VEOF] = 1; - termnew.c_iflag = BRKINT | ISTRIP | IXON | IXANY; - termnew.c_oflag = 0; -@@ -686,13 +735,19 @@ + termnew.c_cc[VEOF] = 1; + termnew.c_iflag = BRKINT | ISTRIP | IXON | IXANY; + termnew.c_oflag = 0; +@@ -694,13 +739,18 @@ #ifdef TCSETS - (void) ioctl (ttyfd, TCSETS, &termnew); + (void) ioctl (ttyfd, TCSETS, &termnew); #endif +#endif } - static void - bye (int signum) + static void bye (int signum) { -+ +#ifdef __FreeBSD__ -+ (void) tcsetattr(0, TCSADRAIN, &termorig); ++ (void) tcsetattr(0, TCSADRAIN, &termorig); +#else #ifdef TCSETS - (void) ioctl (0, TCSETS, &termorig); -+#endif + (void) ioctl (0, TCSETS, &termorig); #endif ++#endif - close (timing.fd); + close (timing.fd); + close (script.fd);