Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 28 Aug 2019 18:09:16 +0000 (UTC)
From:      "Tobias C. Berner" <tcberner@FreeBSD.org>
To:        ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org
Subject:   svn commit: r510087 - in head/security/plasma5-kwallet-pam: . files
Message-ID:  <201908281809.x7SI9GJ1086873@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: tcberner
Date: Wed Aug 28 18:09:16 2019
New Revision: 510087
URL: https://svnweb.freebsd.org/changeset/ports/510087

Log:
  security/plasma5-kwallet-pam: make it work
  
  - Replace the use of socat with netcat which is in base.  Note that netcat is
    bidirectional.  It sends input from stdin over the socket and input from the
    socket to stdout.  After receiving EOF on stdin it keeps polling the socket
    for input until the other end closes the connection, which in the case of
    kwalletd never happens because it's also waiting for more data until the
    other end closes the connection.  Call netcat using "nc | :" so its stdout is
    a pipe of which the far end closes immediately (stdout itself stays open).
    Without a valid stdout netcat becomes unidirectional.  Using "nc >&-" doesn't
    work because it closes stdout itself and its descriptor will be reused for
    the socket so netcat thinks it has a valid stdout.
  
  - Fix an off-by-one buffer size check.
  
  - Fix a call to bind(2).  The third argument should be the size of the sockaddr
    struct.  It contains an extra field besides sun_path and sun_family in BSD so
    the name of the socket got truncated.
  
  PR:		228291
  Submitted by:	tijl,  mikael.urankar@gmail.com

Added:
  head/security/plasma5-kwallet-pam/files/
  head/security/plasma5-kwallet-pam/files/patch-pam__kwallet.c   (contents, props changed)
  head/security/plasma5-kwallet-pam/files/patch-pam__kwallet__init   (contents, props changed)
Modified:
  head/security/plasma5-kwallet-pam/Makefile
  head/security/plasma5-kwallet-pam/pkg-plist

Modified: head/security/plasma5-kwallet-pam/Makefile
==============================================================================
--- head/security/plasma5-kwallet-pam/Makefile	Wed Aug 28 17:21:42 2019	(r510086)
+++ head/security/plasma5-kwallet-pam/Makefile	Wed Aug 28 18:09:16 2019	(r510087)
@@ -2,6 +2,7 @@
 
 PORTNAME=	kwallet-pam
 DISTVERSION=	${KDE_PLASMA_VERSION}
+PORTREVISION=	1
 CATEGORIES=	security kde kde-plasma
 
 MAINTAINER=	kde@FreeBSD.org
@@ -16,5 +17,11 @@ USES=		cmake cpe gettext kde:5 qt:5 tar:xz
 USE_KDE=	ecm wallet
 USE_QT=		gui \
 		buildtools_build qmake_build
+
+post-patch:
+	@${REINPLACE_CMD} -e 's,socat,nc,' -e 's,/security,,' \
+		${WRKSRC}/CMakeLists.txt
+	@${REINPLACE_CMD} 's,/usr/bin/kwalletd,${LOCALBASE}/bin/kwalletd,' \
+		${WRKSRC}/pam_kwallet.c
 
 .include <bsd.port.mk>

Added: head/security/plasma5-kwallet-pam/files/patch-pam__kwallet.c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/security/plasma5-kwallet-pam/files/patch-pam__kwallet.c	Wed Aug 28 18:09:16 2019	(r510087)
@@ -0,0 +1,21 @@
+---pam_kwallet.c	2019-08-28 10:45:20.619019000 +0200
++++ pam_kwallet.c	2019-08-28 10:47:11.632255000 +0200
+@@ -390,7 +390,7 @@ static void execute_kwallet(pam_handle_t *pamh, struct
+     struct sockaddr_un local;
+     local.sun_family = AF_UNIX;
+ 
+-    if (strlen(fullSocket) > sizeof(local.sun_path)) {
++    if (strlen(fullSocket) >= sizeof(local.sun_path)) {
+         syslog(LOG_ERR, "%s: socket path %s too long to open",
+                    logPrefix, fullSocket);
+         free(fullSocket);
+@@ -403,8 +403,7 @@ static void execute_kwallet(pam_handle_t *pamh, struct
+ 
+     syslog(LOG_DEBUG, "%s: final socket path: %s", logPrefix, local.sun_path);
+ 
+-    size_t len = strlen(local.sun_path) + sizeof(local.sun_family);
+-    if (bind(envSocket, (struct sockaddr *)&local, len) == -1) {
++    if (bind(envSocket, (struct sockaddr *)&local, sizeof(local)) == -1) {
+         syslog(LOG_INFO, "%s-kwalletd: Couldn't bind to local file\n", logPrefix);
+         goto cleanup;
+     }

Added: head/security/plasma5-kwallet-pam/files/patch-pam__kwallet__init
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/security/plasma5-kwallet-pam/files/patch-pam__kwallet__init	Wed Aug 28 18:09:16 2019	(r510087)
@@ -0,0 +1,10 @@
+--- pam_kwallet_init.orig	2019-08-09 12:51:25.200806000 +0200
++++ pam_kwallet_init	2019-08-09 12:51:41.765221000 +0200
+@@ -1,6 +1,6 @@
+ #!/bin/sh
+ 
+ if test -n "$PAM_KWALLET5_LOGIN" ; then
+-    env | socat STDIN UNIX-CONNECT:$PAM_KWALLET5_LOGIN
++    env | nc -U "$PAM_KWALLET5_LOGIN" | :
+ fi
+ 

Modified: head/security/plasma5-kwallet-pam/pkg-plist
==============================================================================
--- head/security/plasma5-kwallet-pam/pkg-plist	Wed Aug 28 17:21:42 2019	(r510086)
+++ head/security/plasma5-kwallet-pam/pkg-plist	Wed Aug 28 18:09:16 2019	(r510087)
@@ -1,3 +1,3 @@
 etc/xdg/autostart/pam_kwallet_init.desktop
 lib/libexec/pam_kwallet_init
-lib/security/pam_kwallet5.so
+lib/pam_kwallet5.so



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201908281809.x7SI9GJ1086873>