git: 88ae750911d4 - main - security/pam_pwdfile: Update to latest version 2.0

From: Lev A. Serebryakov <lev_at_FreeBSD.org>
Date: Wed, 02 Apr 2025 19:02:43 UTC
The branch main has been updated by lev:

URL: https://cgit.FreeBSD.org/ports/commit/?id=88ae750911d4e3e4b34a8ba2fa1b6375e8c65243

commit 88ae750911d4e3e4b34a8ba2fa1b6375e8c65243
Author:     Lev A. Serebryakov <lev@FreeBSD.org>
AuthorDate: 2025-04-02 19:00:57 +0000
Commit:     Lev A. Serebryakov <lev@FreeBSD.org>
CommitDate: 2025-04-02 19:02:40 +0000

    security/pam_pwdfile: Update to latest version 2.0
    
    PR:             285688
    Reported by:    ykla <yklaxds@gmail.com>
---
 security/pam_pwdfile/Makefile                   |  21 ++-
 security/pam_pwdfile/distinfo                   |   6 +-
 security/pam_pwdfile/files/Makefile.bsd         |  29 ----
 security/pam_pwdfile/files/_pam_macros.h        | 196 ------------------------
 security/pam_pwdfile/files/patch-Makefile       |  22 +++
 security/pam_pwdfile/files/patch-md5.c          |  20 ---
 security/pam_pwdfile/files/patch-pam__pwdfile.c |  22 +++
 security/pam_pwdfile/files/patch-pam_pwdfile.c  |  33 ----
 8 files changed, 56 insertions(+), 293 deletions(-)

diff --git a/security/pam_pwdfile/Makefile b/security/pam_pwdfile/Makefile
index fdb584e1e0c0..c668362b2bdd 100644
--- a/security/pam_pwdfile/Makefile
+++ b/security/pam_pwdfile/Makefile
@@ -1,18 +1,15 @@
 PORTNAME=	pam_pwdfile
-PORTVERSION=	1.0
-DISTVERSIONPREFIX=	v
+PORTVERSION=	2.0
+MASTER_SITES=	https://git.tiwe.de/libpam-pwdfile.git/snapshot/
+DISTFILES=	libpam-pwdfile-${PORTVERSION}.tar.gz
 CATEGORIES=	security
 
 MAINTAINER=	lev@FreeBSD.org
 COMMENT=	Pam module for authenticating with flat passwd files
-WWW=		http://www.cpbotha.net/pam_pwdfile.html
+WWW=		https://www.cpbotha.net/software/pam_pwdfile/
 
-USES=		uidfix
-USE_GITHUB=	yes
-GH_ACCOUNT=	tiwe-de
-GH_PROJECT=	libpam-pwdfile
-
-MAKEFILE=	${FILESDIR}/Makefile.bsd
+LICENSE=	BSD3CLAUSE GPLv1 GPLv2 GPLv3
+LICENSE_COMB=	dual
 
 PLIST_FILES=	lib/pam_pwdfile.so
 PORTDOCS=	README INSTALL
@@ -20,9 +17,9 @@ CFLAGS+=	-I${WRKSRC}
 
 OPTIONS_DEFINE=	DOCS
 
-post-patch:
-#	${REINPLACE_CMD} -e 's|#include <features.h>||g' ${WRKSRC}/pam_pwdfile.c
-	${CP} ${FILESDIR}/_pam_macros.h ${WRKSRC}
+MAKE_ARGS=	PAM_LIB_DIR=${PREFIX}/lib
+
+WRKSRC=		${WRKDIR}/libpam-pwdfile-${PORTVERSION}
 
 post-install:
 	@${MKDIR} ${STAGEDIR}${DOCSDIR}
diff --git a/security/pam_pwdfile/distinfo b/security/pam_pwdfile/distinfo
index 2e687992245e..268210589afb 100644
--- a/security/pam_pwdfile/distinfo
+++ b/security/pam_pwdfile/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1523883055
-SHA256 (tiwe-de-libpam-pwdfile-v1.0_GH0.tar.gz) = 5b8db1397cff9cadfd1bb96f53c134b787ab0e6a0fbedb71040541d340313ba2
-SIZE (tiwe-de-libpam-pwdfile-v1.0_GH0.tar.gz) = 13418
+TIMESTAMP = 1743618637
+SHA256 (libpam-pwdfile-2.0.tar.gz) = 981c286923c2018ececb5025ba0b27020ffa964d8b8d426ff58ad7f156e72424
+SIZE (libpam-pwdfile-2.0.tar.gz) = 8063
diff --git a/security/pam_pwdfile/files/Makefile.bsd b/security/pam_pwdfile/files/Makefile.bsd
deleted file mode 100644
index 8c848c8a9ab1..000000000000
--- a/security/pam_pwdfile/files/Makefile.bsd
+++ /dev/null
@@ -1,29 +0,0 @@
-# inspired from pam-pgsql port :-)
-
-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
-CFLAGS+=	-Wall -D_BSD_SOURCE
-
-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 <bsd.lib.mk>
diff --git a/security/pam_pwdfile/files/_pam_macros.h b/security/pam_pwdfile/files/_pam_macros.h
deleted file mode 100644
index bd107cfb68cb..000000000000
--- a/security/pam_pwdfile/files/_pam_macros.h
+++ /dev/null
@@ -1,196 +0,0 @@
-#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 <gafton@redhat.com>
- */
-
-/* a 'safe' version of strdup */
-
-#include <stdlib.h>
-#include <string.h>
-
-#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__<n; __i__++) \
-            __xx__[__i__] = 0; \
-} while (0)
-
-/*
- * Don't just free it, forget it too.
- */
-
-#define _pam_drop(X) \
-do {                 \
-    if (X) {         \
-        free(X);     \
-        X=NULL;      \
-    }                \
-} while (0)
-
-#define _pam_drop_reply(/* struct pam_response * */ reply, /* int */ replies) \
-do {                                              \
-    int reply_i;                                  \
-                                                  \
-    for (reply_i=0; reply_i<replies; ++reply_i) { \
-	if (reply[reply_i].resp) {                \
-	    _pam_overwrite(reply[reply_i].resp);  \
-	    free(reply[reply_i].resp);            \
-	}                                         \
-    }                                             \
-    if (reply)                                    \
-	free(reply);                              \
-} while (0)
-
-/* some debugging code */
-
-#ifdef DEBUG
-
-/*
- * This provides the necessary function to do debugging in PAM.
- * Cristian Gafton <gafton@redhat.com>
- */
-
-#include <stdio.h>
-#include <sys/types.h>
-#include <stdarg.h>
-#include <errno.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <unistd.h>
-
-/*
- * 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, "  <start at %p>\n", X);                        \
-      for (i = 0; i < XS ; ++x, ++i) {                                \
-          fprintf(stderr, "    %02X. <%p:%02X>\n", i, x, *x);         \
-      }                                                               \
-      fprintf(stderr, "  <end for %p after %d bytes>\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 --git a/security/pam_pwdfile/files/patch-Makefile b/security/pam_pwdfile/files/patch-Makefile
new file mode 100644
index 000000000000..0fc9db28ca8f
--- /dev/null
+++ b/security/pam_pwdfile/files/patch-Makefile
@@ -0,0 +1,22 @@
+--- Makefile.orig	2025-04-02 18:45:17 UTC
++++ Makefile
+@@ -2,8 +2,8 @@ PAM_LIB_DIR ?= /lib/security
+ INSTALL ?= install
+ CFLAGS ?= -O2 -g -Wall -Wformat-security
+ 
+-CPPFLAGS += -DUSE_CRYPT_R -D_FILE_OFFSET_BITS=64
+-CFLAGS += -fPIC -fvisibility=hidden
++CPPFLAGS += -D_FILE_OFFSET_BITS=64
++CFLAGS += -fPIC -fvisibility=hidden ${CPPFLAGS}
+ LDFLAGS += -Wl,-x -shared
+ 
+ TITLE = pam_pwdfile
+@@ -19,7 +19,7 @@ $(LIBSHARED): $(LIBOBJ)
+ 
+ install: $(LIBSHARED)
+ 	$(INSTALL) -m 0755 -d $(DESTDIR)$(PAM_LIB_DIR)
+-	$(INSTALL) -m 0755 $(LIBSHARED) $(DESTDIR)$(PAM_LIB_DIR)
++	$(INSTALL) -m 0755 -s $(LIBSHARED) $(DESTDIR)$(PAM_LIB_DIR)
+ 
+ clean:
+ 	$(RM) *.o *.so
diff --git a/security/pam_pwdfile/files/patch-md5.c b/security/pam_pwdfile/files/patch-md5.c
deleted file mode 100644
index 91fd576ad619..000000000000
--- a/security/pam_pwdfile/files/patch-md5.c
+++ /dev/null
@@ -1,20 +0,0 @@
---- md5.c.orig	2018-04-13 14:15:16.302782000 +0300
-+++ md5.c	2018-04-13 14:25:07.662155000 +0300
-@@ -17,7 +17,7 @@
-  */
- 
- #include <string.h>
--#include <byteswap.h>
-+#include <sys/endian.h>
- #include "md5.h"
- 
- #ifndef HIGHFIRST
-@@ -25,7 +25,7 @@
- #else
- static void byteReverse(unsigned char *buf, unsigned longs) {
- 	for (; longs; --longs, buf +=4)
--		*((uint32_t *) buf) = bswap_32(*((uint32_t *) buf));
-+		*((uint32_t *) buf) = bswap32(*((uint32_t *) buf));
- }
- #endif
- 
diff --git a/security/pam_pwdfile/files/patch-pam__pwdfile.c b/security/pam_pwdfile/files/patch-pam__pwdfile.c
new file mode 100644
index 000000000000..44954c122be0
--- /dev/null
+++ b/security/pam_pwdfile/files/patch-pam__pwdfile.c
@@ -0,0 +1,22 @@
+--- pam_pwdfile.c.orig	2025-04-02 18:36:58 UTC
++++ pam_pwdfile.c
+@@ -42,9 +42,6 @@
+ #define _GNU_SOURCE
+ #include <crypt.h>
+ #else
+-#ifndef _XOPEN_SOURCE
+-#define _XOPEN_SOURCE 700
+-#endif
+ #ifndef _BSD_SOURCE
+ #define _BSD_SOURCE
+ #endif
+@@ -66,7 +63,8 @@
+ 
+ #define PAM_SM_AUTH
+ #include <security/pam_modules.h>
+-#include <security/pam_ext.h>
++
++#define pam_syslog(H, C, ...)  syslog(C, __VA_ARGS__)
+ 
+ static int lock_fd(int fd) {
+     int delay;
diff --git a/security/pam_pwdfile/files/patch-pam_pwdfile.c b/security/pam_pwdfile/files/patch-pam_pwdfile.c
deleted file mode 100644
index 911ea6fa4992..000000000000
--- a/security/pam_pwdfile/files/patch-pam_pwdfile.c
+++ /dev/null
@@ -1,33 +0,0 @@
---- pam_pwdfile.c.orig	2018-04-13 14:25:49.414568000 +0300
-+++ pam_pwdfile.c	2018-04-13 14:42:33.040919000 +0300
-@@ -38,18 +38,7 @@
-  * OF THE POSSIBILITY OF SUCH DAMAGE.
-  */
- 
--#ifdef USE_CRYPT_R
--#define _GNU_SOURCE
--#include <crypt.h>
--#else
--#ifndef _XOPEN_SOURCE
--#define _XOPEN_SOURCE 700
--#endif
--#ifndef _BSD_SOURCE
--#define _BSD_SOURCE
--#endif
--#endif
--
-+#include <stdint.h>
- #include <syslog.h>
- #include <stdio.h>
- #include <stdlib.h>
-@@ -66,7 +55,9 @@
- 
- #define PAM_SM_AUTH
- #include <security/pam_modules.h>
--#include <security/pam_ext.h>
-+/* #include <security/pam_ext.h> */
-+
-+#define pam_syslog(H, C, ...)	syslog(C, __VA_ARGS__)
- 
- #include "md5.h"
- #include "bigcrypt.h"