This patch adds missing include for paths.h which should provide
_PATH_LASTLOG definition

Upstream-Status: Pending

Signed-off-by: Khem Raj <raj.khem@gmail.com>
Index: Linux-PAM-1.1.6/modules/pam_lastlog/pam_lastlog.c
===================================================================
--- Linux-PAM-1.1.6.orig/modules/pam_lastlog/pam_lastlog.c
+++ Linux-PAM-1.1.6/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
     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)
Index: Linux-PAM-1.1.6/modules/Makefile.am
===================================================================
--- Linux-PAM-1.1.6.orig/modules/Makefile.am
+++ Linux-PAM-1.1.6/modules/Makefile.am
@@ -7,7 +7,7 @@ SUBDIRS = pam_access pam_cracklib pam_de
 	pam_group pam_issue pam_keyinit pam_lastlog pam_limits \
 	pam_listfile pam_localuser pam_loginuid pam_mail \
 	pam_mkhomedir pam_motd pam_namespace pam_nologin \
-	pam_permit pam_pwhistory pam_rhosts pam_rootok pam_securetty \
+	pam_permit pam_pwhistory pam_rootok pam_securetty \
 	pam_selinux pam_sepermit pam_shells pam_stress \
 	pam_succeed_if pam_tally pam_tally2 pam_time pam_timestamp \
 	pam_tty_audit pam_umask \
