[PATCH] pam_lastlog.c: Fix build with musl

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



From: "Maxin B. John" <maxin.john@xxxxxxxxx>

Define strndupa if not available in libc. Also fix headers to explicitly
needed include files which glibc was including indirectly

Signed-off-by: Khem Raj <raj.khem@xxxxxxxxx>
Signed-off-by: Maxin B. John <maxin.john@xxxxxxxxx>
---
 modules/pam_lastlog/pam_lastlog.c | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

diff --git a/modules/pam_lastlog/pam_lastlog.c b/modules/pam_lastlog/pam_lastlog.c
index 1e2f08d..6c17a31 100644
--- a/modules/pam_lastlog/pam_lastlog.c
+++ b/modules/pam_lastlog/pam_lastlog.c
@@ -23,9 +23,11 @@
 #include <stdarg.h>
 #include <stdio.h>
 #include <string.h>
+#include <sys/file.h>
 #include <sys/types.h>
 #include <syslog.h>
 #include <unistd.h>
+#include <paths.h>
 
 #if defined(hpux) || defined(sunos) || defined(solaris)
 # ifndef _PATH_LASTLOG
@@ -332,6 +334,23 @@ last_login_read(pam_handle_t *pamh, int announce, int last_fd, uid_t uid, time_t
     return retval;
 }
 
+#ifndef __GLIBC__
+static void logwtmp(const char * line, const char * name, const char * host)
+{
+    struct utmp u;
+    memset(&u, 0, sizeof(u));
+
+    u.ut_pid = getpid();
+    u.ut_type = name[0] ? USER_PROCESS : DEAD_PROCESS;
+    strncpy(u.ut_line, line, sizeof(u.ut_line));
+    strncpy(u.ut_name, name, sizeof(u.ut_name));
+    strncpy(u.ut_host, host, sizeof(u.ut_host));
+    gettimeofday(&(u.ut_tv), NULL);
+
+    updwtmp(_PATH_WTMP, &u);
+}
+#endif /* __GLIBC__ */
+
 static int
 last_login_write(pam_handle_t *pamh, int announce, int last_fd,
 		 uid_t uid, const char *user)
-- 
2.4.0

_______________________________________________
Pam-list mailing list
Pam-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/pam-list



[Index of Archives]     [Fedora Users]     [Kernel]     [Red Hat Install]     [Linux for the blind]     [Gimp]

  Powered by Linux