Sunday, December 04, 2022

[PATCH] Fix crash in uucpd on authentication

Hey,

getpwnam hasn't filled in passwd->pw_passwd since 5.9. This fixes a
crash in uucpd that relied on the legacy behavior.

Please cc me; not subscribed to this list.

Thanks,
worr

---

Index: Makefile
===================================================================
RCS file: /cvs/ports/net/uucpd/Makefile,v
retrieving revision 1.3
diff -u -b -w -p -r1.3 Makefile
--- Makefile 11 Mar 2022 19:48:03 -0000 1.3
+++ Makefile 4 Dec 2022 11:57:40 -0000
@@ -1,6 +1,7 @@
COMMENT = UUCP inetd program

DISTNAME = uucpd-1.0
+REVISION = 0

CATEGORIES = net mail news

Index: patches/patch-uucpd_c
===================================================================
RCS file: /cvs/ports/net/uucpd/patches/patch-uucpd_c,v
retrieving revision 1.2
diff -u -b -w -p -r1.2 patch-uucpd_c
--- patches/patch-uucpd_c 11 Mar 2022 19:48:03 -0000 1.2
+++ patches/patch-uucpd_c 4 Dec 2022 11:57:40 -0000
@@ -1,5 +1,6 @@
---- uucpd.c.orig Wed Mar 12 15:35:25 2014
-+++ uucpd.c Sun Jan 18 16:44:38 2015
+Index: uucpd.c
+--- uucpd.c.orig
++++ uucpd.c
@@ -43,6 +43,7 @@
#include <sys/socket.h>
#include <netinet/in.h>
@@ -8,12 +9,15 @@
#include <netdb.h>
#include <signal.h>
#include <fcntl.h>
-@@ -170,7 +171,7 @@ doit(struct sockaddr *sa)
+@@ -170,9 +171,9 @@ doit(struct sockaddr *sa)
return;
}
} while (user[0] == '\0');
- user[MAXLOGNAME] = '\0';
+ user[LOGIN_NAME_MAX] = '\0';

- pw = getpwnam(user);
+- pw = getpwnam(user);
++ pw = getpwnam_shadow(user);
if (pw == NULL) {
+ printf("Password: ");
+ fflush(stdout);

No comments:

Post a Comment