File vlock-1.4.diff of Package vlock
--- input.c
+++ input.c
@@ -27,6 +27,7 @@
*/
#define _XOPEN_SOURCE 1 /* so unistd.h will define crypt() */
+#define _GNU_SOURCE 1 /* strdup */
#include <unistd.h>
#ifdef SHADOW_PWD
/* Shadow passwd support; THIS IS NOT SAFE with some very old versions
--- signals.c
+++ signals.c
@@ -18,6 +18,7 @@
#include <sys/ioctl.h>
#include <sys/vt.h>
#include "vlock.h"
+#include <stdlib.h>
/* In release_vt() and acquire_vt(), anything which is done in
@@ -49,6 +50,11 @@
return;
}
+void signal_huper(int signo) {
+ restore_signals();
+ restore_terminal();
+ exit(0);
+}
@@ -71,7 +77,7 @@
sigaddset(&sig, SIGTSTP);
sigaddset(&sig, SIGTTIN);
sigaddset(&sig, SIGTTOU);
- sigaddset(&sig, SIGHUP);
+ sigaddset(&sig, SIGTERM);
sigaddset(&sig, SIGCHLD);
sigaddset(&sig, SIGQUIT);
sigaddset(&sig, SIGINT);
@@ -90,10 +96,14 @@
/* Need to handle some signals so that we don't get killed by them */
sa.sa_handler = signal_ignorer;
- sigaction(SIGHUP, &sa, NULL);
+ sigaction(SIGTERM, &sa, NULL);
sigaction(SIGQUIT, &sa, NULL);
sigaction(SIGINT, &sa, NULL);
sigaction(SIGTSTP, &sa, NULL);
+
+ /* Die cleanly on SIGHUP */
+ sa.sa_handler = signal_huper;
+ sigaction(SIGHUP, &sa, NULL);
}
--- vlock.pamd
+++ vlock.pamd
@@ -1,2 +1,5 @@
#%PAM-1.0
-auth required /lib/security/pam_pwdb.so shadow nullok
+auth include common-auth
+account include common-account
+password include common-password
+session include common-session