Update of bug #66059 (group screen):
Status: None => Ready For Test
_______________________________________________________
Follow-up Comment #1:
https://man.openbsd.org/getpwuid_shadow.3
https://github.com/openbsd/src/blob/master/include/pwd.h#L80
Well, ok... what's about this:
diff --git a/src/socket.c b/src/socket.c
index 9c5b8b9..5709a24 100644
--- a/src/socket.c
+++ b/src/socket.c
@@ -47,9 +47,13 @@
#include <signal.h>
#if ENABLE_PAM
-#include <security/pam_appl.h>
+ #include <security/pam_appl.h>
#else
-#include <shadow.h>
+ #ifdef _PWD_H_
+ #include <pwd.h>
+ #else
+ #include <shadow.h>
+ #endif /* PWD_H */
#endif
#include "screen.h"
@@ -1203,13 +1207,27 @@ static bool CheckPassword(const char *password) {
static bool CheckPassword(const char *password) {
bool ret = false;
char *passwd = 0;
+
+#ifndef _PWD_H
+ struct passwd *p;
+#else
struct spwd *p;
+#endif
+
gid_t gid = getegid();
uid_t uid = geteuid();
if (seteuid(0) || setegid(0))
Panic(0, "\r\ncan't get root uid/gid\r\n");
+
+#ifndef _PWD_H
+ p = getpwnam_shadow(ppp->pw_name);
+#else
p = getspnam(ppp->pw_name);
+#endif
+ if (p == NULL)
+ return false;
+
if (seteuid(uid) || setegid(gid))
Panic(0, "\r\ncan't restore uid/gid\r\n");
@@ -1217,11 +1235,13 @@ static bool CheckPassword(const char *password) {
AddStr("\r\ncan't open passwd file\r\n");
return false;
}
-
+#ifndef _PWD_H
+ passwd = crypt(password, p->pw_passwd);
+ ret = (strcmp(passwd, p->pw_passwd) == 0);
+#else
passwd = crypt(password, p->sp_pwdp);
-
ret = (strcmp(passwd, p->sp_pwdp) == 0);
-
+#endif
return ret;
}
#endif /* ENABLE_PAM */
_______________________________________________________
Reply to this item at:
<https://savannah.gnu.org/bugs/?66059>
_______________________________________________
Message sent via Savannah
https://savannah.gnu.org/
signature.asc
Description: PGP signature
