From owner-freebsd-ports-bugs@FreeBSD.ORG Thu Oct 8 01:40:03 2009 Return-Path: Delivered-To: freebsd-ports-bugs@hub.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 990C4106566B for ; Thu, 8 Oct 2009 01:40:03 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:4f8:fff6::28]) by mx1.freebsd.org (Postfix) with ESMTP id 610818FC13 for ; Thu, 8 Oct 2009 01:40:03 +0000 (UTC) Received: from freefall.freebsd.org (localhost [127.0.0.1]) by freefall.freebsd.org (8.14.3/8.14.3) with ESMTP id n981e3J5011845 for ; Thu, 8 Oct 2009 01:40:03 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.14.3/8.14.3/Submit) id n981e3oQ011844; Thu, 8 Oct 2009 01:40:03 GMT (envelope-from gnats) Date: Thu, 8 Oct 2009 01:40:03 GMT Message-Id: <200910080140.n981e3oQ011844@freefall.freebsd.org> To: freebsd-ports-bugs@FreeBSD.org From: Andreas Schwarz Cc: Subject: Re: ports/138483: security/pam_pwdfile port doesn't work post update to 0.99 X-BeenThere: freebsd-ports-bugs@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: Andreas Schwarz List-Id: Ports bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 08 Oct 2009 01:40:03 -0000 The following reply was made to PR ports/138483; it has been noted by GNATS. From: Andreas Schwarz To: bug-followup@FreeBSD.org, me@benschumacher.com Cc: Subject: Re: ports/138483: security/pam_pwdfile port doesn't work post update to 0.99 Date: Thu, 08 Oct 2009 03:06:05 +0200 Warning: This is a message in MIME format. Your mail reader does not support MIME. Some parts of this message will be readable as plain text. To see the rest, you will need to upgrade your mail reader. Following are some URLs where you can find MIME-capable mail programs for common platforms: AmigaOS...........: http://www.yam.ch/ Unix/MacOS/Windows: http://www.mozilla.com/thunderbird/ General information about MIME can be found at: http://en.wikipedia.org/wiki/MIME ----=_BOUNDARY.22c5ca386694c4ae.01 Content-Type: text/plain Unfortunately there is a litte problem with the patch, The "_pam_macros.h" would not be found, because it is not in the search path. The patch for bigcrypt.c should add #include "_pam_macros.h" instead of #include . ===> Configuring for pam_pwdfile-0.99_1 ===> Building for pam_pwdfile-0.99_1 Warning: Object directory not changed from original /root/_sys/ports/security/pam_pwdfile/work/pam_pwdfile-0.99 cc -fpic -DPIC -O -pipe -march=pentium4 -Wall -D_BSD_SOURCE -c pam_pwdfile.c -o pam_pwdfile.So cc -fpic -DPIC -O -pipe -march=pentium4 -Wall -D_BSD_SOURCE -c bigcrypt.c -o bigcrypt.So bigcrypt.c:28:25: error: _pam_macros.h: No such file or directory ----=_BOUNDARY.22c5ca386694c4ae.01 Content-Type: text/plain; name="pam_pwdfile.patch" Content-Disposition: attachment; filename="pam_pwdfile.patch" diff -Naur security/pam_pwdfile.old/Makefile security/pam_pwdfile/Makefile --- security/pam_pwdfile.old/Makefile 2009-09-07 22:10:40.000000000 +0200 +++ security/pam_pwdfile/Makefile 2009-10-08 02:57:58.000000000 +0200 @@ -7,6 +7,7 @@ PORTNAME= pam_pwdfile PORTVERSION= 0.99 +PORTREVISION= 1 CATEGORIES= security MASTER_SITES= http://cpbotha.net/files/pam_pwdfile/ @@ -17,9 +18,11 @@ PLIST_FILES= lib/pam_pwdfile.so PORTDOCS= README INSTALL changelog +CFLAGS+= -I${WRKSRC} post-patch: ${REINPLACE_CMD} -e 's|#include ||g' ${WRKSRC}/pam_pwdfile.c + ${CP} ${FILESDIR}/_pam_macros.h ${WRKSRC} post-install: .if !defined(NOPORTDOCS) diff -Naur security/pam_pwdfile.old/files/Makefile.bsd security/pam_pwdfile/files/Makefile.bsd --- security/pam_pwdfile.old/files/Makefile.bsd 2002-07-21 19:02:04.000000000 +0200 +++ security/pam_pwdfile/files/Makefile.bsd 2009-10-08 02:57:58.000000000 +0200 @@ -1,6 +1,12 @@ # inspired from pam-pgsql port :-) -SRCS= pam_pwdfile.c +SRCS= pam_pwdfile.c \ + bigcrypt.c \ + md5_good.c \ + md5_crypt_good.c \ + md5_broken.c \ + md5_crypt_broken.c + SHLIB_NAME= pam_pwdfile.so LDADD= -lpam -lcrypt @@ -8,4 +14,16 @@ LIBDIR= ${LOCALBASE}/lib +md5_good.c: md5.c + $(CPP) $(CPPFLAGS) -DHIGHFIRST -D'MD5Name(x)=Good##x' -o $@ $> + +md5_broken.c: md5.c + $(CPP) $(CPPFLAGS) -D'MD5Name(x)=Broken##x' -o $@ $> + +md5_crypt_good.c: md5_crypt.c + $(CPP) $(CPPFLAGS) -D'MD5Name(x)=Good##x' -o $@ $> + +md5_crypt_broken.c: md5_crypt.c + $(CPP) $(CPPFLAGS) -D'MD5Name(x)=Broken##x' -o $@ $> + .include diff -Naur security/pam_pwdfile.old/files/_pam_macros.h security/pam_pwdfile/files/_pam_macros.h --- security/pam_pwdfile.old/files/_pam_macros.h 1970-01-01 01:00:00.000000000 +0100 +++ security/pam_pwdfile/files/_pam_macros.h 2009-10-08 02:57:58.000000000 +0200 @@ -0,0 +1,196 @@ +#ifndef PAM_MACROS_H +#define PAM_MACROS_H + +/* + * All kind of macros used by PAM, but usable in some other + * programs too. + * Organized by Cristian Gafton + */ + +/* a 'safe' version of strdup */ + +#include +#include + +#define x_strdup(s) ( (s) ? strdup(s):NULL ) + +/* Good policy to strike out passwords with some characters not just + free the memory */ + +#define _pam_overwrite(x) \ +do { \ + register char *__xx__; \ + if ((__xx__=(x))) \ + while (*__xx__) \ + *__xx__++ = '\0'; \ +} while (0) + +#define _pam_overwrite_n(x,n) \ +do { \ + register char *__xx__; \ + register unsigned int __i__ = 0; \ + if ((__xx__=(x))) \ + for (;__i__ + */ + +#include +#include +#include +#include +#include +#include +#include + +/* + * This is for debugging purposes ONLY. DO NOT use on live systems !!! + * You have been warned :-) - CG + * + * to get automated debugging to the log file, it must be created manually. + * _PAM_LOGFILE must exist and be writable to the programs you debug. + */ + +#ifndef _PAM_LOGFILE +#define _PAM_LOGFILE "/var/run/pam-debug.log" +#endif + +static void _pam_output_debug_info(const char *file, const char *fn + , const int line) +{ + FILE *logfile; + int must_close = 1, fd; + +#ifdef O_NOFOLLOW + if ((fd = open(_PAM_LOGFILE, O_WRONLY|O_NOFOLLOW|O_APPEND)) != -1) { +#else + if ((fd = open(_PAM_LOGFILE, O_WRONLY|O_APPEND)) != -1) { +#endif + if (!(logfile = fdopen(fd,"a"))) { + logfile = stderr; + must_close = 0; + close(fd); + } + } else { + logfile = stderr; + must_close = 0; + } + fprintf(logfile,"[%s:%s(%d)] ",file, fn, line); + fflush(logfile); + if (must_close) + fclose(logfile); +} + +static void _pam_output_debug(const char *format, ...) +{ + va_list args; + FILE *logfile; + int must_close = 1, fd; + + va_start(args, format); + +#ifdef O_NOFOLLOW + if ((fd = open(_PAM_LOGFILE, O_WRONLY|O_NOFOLLOW|O_APPEND)) != -1) { +#else + if ((fd = open(_PAM_LOGFILE, O_WRONLY|O_APPEND)) != -1) { +#endif + if (!(logfile = fdopen(fd,"a"))) { + logfile = stderr; + must_close = 0; + close(fd); + } + } else { + logfile = stderr; + must_close = 0; + } + vfprintf(logfile, format, args); + fprintf(logfile, "\n"); + fflush(logfile); + if (must_close) + fclose(logfile); + + va_end(args); +} + +#define D(x) do { \ + _pam_output_debug_info(__FILE__, __FUNCTION__, __LINE__); \ + _pam_output_debug x ; \ +} while (0) + +#define _pam_show_mem(X,XS) do { \ + int i; \ + register unsigned char *x; \ + x = (unsigned char *)X; \ + fprintf(stderr, " \n", X); \ + for (i = 0; i < XS ; ++x, ++i) { \ + fprintf(stderr, " %02X. <%p:%02X>\n", i, x, *x); \ + } \ + fprintf(stderr, " \n", X, XS); \ +} while (0) + +#define _pam_show_reply(/* struct pam_response * */reply, /* int */replies) \ +do { \ + int reply_i; \ + setbuf(stderr, NULL); \ + fprintf(stderr, "array at %p of size %d\n",reply,replies); \ + fflush(stderr); \ + if (reply) { \ + for (reply_i = 0; reply_i < replies; reply_i++) { \ + fprintf(stderr, " elem# %d at %p: resp = %p, retcode = %d\n", \ + reply_i, reply+reply_i, reply[reply_i].resp, \ + reply[reply_i].resp, _retcode); \ + fflush(stderr); \ + if (reply[reply_i].resp) { \ + fprintf(stderr, " resp[%d] = '%s'\n", \ + strlen(reply[reply_i].resp), reply[reply_i].resp); \ + fflush(stderr); \ + } \ + } \ + } \ + fprintf(stderr, "done here\n"); \ + fflush(stderr); \ +} while (0) + +#else + +#define D(x) do { } while (0) +#define _pam_show_mem(X,XS) do { } while (0) +#define _pam_show_reply(reply, replies) do { } while (0) + +#endif /* DEBUG */ + +#endif /* PAM_MACROS_H */ diff -Naur security/pam_pwdfile.old/files/patch-bigcrypt.c security/pam_pwdfile/files/patch-bigcrypt.c --- security/pam_pwdfile.old/files/patch-bigcrypt.c 1970-01-01 01:00:00.000000000 +0100 +++ security/pam_pwdfile/files/patch-bigcrypt.c 2009-10-08 02:57:58.000000000 +0200 @@ -0,0 +1,11 @@ +--- bigcrypt.c.orig 2009-09-04 18:37:28.000000000 -0500 ++++ bigcrypt.c 2009-09-04 18:37:30.000000000 -0500 +@@ -25,7 +25,7 @@ + */ + + #include +-#include ++#include "_pam_macros.h" + + char *crypt(const char *key, const char *salt); + char *bigcrypt(const char *key, const char *salt); ----=_BOUNDARY.22c5ca386694c4ae.01--