aboutsummaryrefslogtreecommitdiffstats
path: root/testing/gdm/0001-gdm-session-record-alpine-does-not-have-utmp.patch
diff options
context:
space:
mode:
Diffstat (limited to 'testing/gdm/0001-gdm-session-record-alpine-does-not-have-utmp.patch')
-rw-r--r--testing/gdm/0001-gdm-session-record-alpine-does-not-have-utmp.patch151
1 files changed, 0 insertions, 151 deletions
diff --git a/testing/gdm/0001-gdm-session-record-alpine-does-not-have-utmp.patch b/testing/gdm/0001-gdm-session-record-alpine-does-not-have-utmp.patch
deleted file mode 100644
index 57990ea047..0000000000
--- a/testing/gdm/0001-gdm-session-record-alpine-does-not-have-utmp.patch
+++ /dev/null
@@ -1,151 +0,0 @@
-From 4d25e3bbd9e22a4db5dfb3c9267f0336761ea904 Mon Sep 17 00:00:00 2001
-From: William Pitcock <nenolod@dereferenced.org>
-Date: Tue, 6 Jun 2017 00:23:34 +0000
-Subject: [PATCH 1/3] gdm-session-record: alpine does not have utmp
-
----
- daemon/gdm-session-record.c | 100 ++++++++++++++++++++++++++++++++++++++++++--
- 1 file changed, 96 insertions(+), 4 deletions(-)
-
-diff --git a/daemon/gdm-session-record.c b/daemon/gdm-session-record.c
-index 32933ef0..3154df2e 100644
---- a/daemon/gdm-session-record.c
-+++ b/daemon/gdm-session-record.c
-@@ -33,6 +33,16 @@
- #include <utmp.h>
- #endif
-
-+#if defined(HAVE_UTIL_H)
-+#include <util.h>
-+#endif
-+
-+#if defined(HAVE_GETTTYENT)
-+#include <fcntl.h> /* open(2) */
-+#include <ttyent.h>
-+static int fd = -1;
-+#endif
-+
- #include <glib.h>
- #include <glib/gi18n.h>
- #include <glib/gstdio.h>
-@@ -43,6 +53,9 @@
- #define GDM_BAD_SESSION_RECORDS_FILE "/var/log/btmp"
- #endif
-
-+static void write_utmp_login_manually (struct utmp *ut);
-+static void write_utmp_logout_manually (char *);
-+
- #if !defined(GDM_NEW_SESSION_RECORDS_FILE)
- # if defined(WTMPX_FILE)
- # define GDM_NEW_SESSION_RECORDS_FILE WTMPX_FILE
-@@ -183,6 +196,84 @@ record_set_line (UTMP *u,
- g_debug ("using ut_line %.*s", (int) sizeof (u->ut_line), u->ut_line);
- }
-
-+static void
-+write_utmp_login_manually (struct utmp *ut)
-+{
-+#if defined(HAVE_GETTTYENT) && defined(HAVE_UTMP_H)
-+ UTMP ubuf;
-+ int topslot = -1;
-+
-+ g_debug ("Adding new utmp record");
-+
-+ /*
-+ * First, loop through /etc/ttys, if needed, to initialize the
-+ * top of the tty slots, since gdm has no tty.
-+ */
-+ if (topslot < 0) {
-+ topslot = 0;
-+ while (getttyent () != (struct ttyent *) NULL)
-+ topslot++;
-+ }
-+ if ((topslot < 0) || ((fd < 0) &&
-+ (fd = open (_PATH_UTMP, O_RDWR|O_CREAT, 0644)) < 0))
-+ return;
-+
-+ /*
-+ * Now find a slot that's not in use...
-+ */
-+ (void) lseek (fd, (off_t) (topslot * sizeof (struct utmp)), SEEK_SET);
-+
-+ while (1) {
-+ if (read (fd, &ubuf, sizeof (struct utmp)) ==
-+ sizeof (struct utmp)) {
-+ if (!ubuf.ut_name[0]) {
-+ (void) lseek (fd, -(off_t) sizeof (struct utmp),
-+ SEEK_CUR);
-+ break;
-+ }
-+ topslot++;
-+ } else {
-+ (void) lseek (fd, (off_t) (topslot *
-+ sizeof (struct utmp)), SEEK_SET);
-+ break;
-+ }
-+ }
-+
-+ (void) write (fd, ut, sizeof (struct utmp));
-+#endif
-+}
-+
-+static void
-+write_utmp_logout_manually (char *line)
-+{
-+#if defined(HAVE_GETTTYENT) && defined(HAVE_UTMP_H)
-+ int rval = 1;
-+ struct timeval tv;
-+ UTMP ut;
-+
-+ g_debug ("Removing utmp record");
-+
-+ if (fd >= 0) {
-+ (void) lseek (fd, 0, SEEK_SET);
-+ while (read (fd, &ut, sizeof (struct utmp)) == sizeof (struct utmp)) {
-+ if (!ut.ut_name[0] ||
-+ strncmp (ut.ut_line, line, UT_LINESIZE))
-+ continue;
-+ bzero (ut.ut_name, UT_NAMESIZE);
-+ bzero (ut.ut_host, UT_HOSTSIZE);
-+ gettimeofday (&tv, NULL);
-+ ut.ut_time = tv.tv_sec;
-+ (void) lseek (fd, -(off_t) sizeof (struct utmp), SEEK_CUR);
-+ (void) write (fd, &ut, sizeof (struct utmp));
-+ rval = 0;
-+ }
-+ }
-+
-+ if (rval != 0)
-+ g_debug ("Failed to remove utmp record");
-+#endif
-+}
-+
- void
- gdm_session_record_login (GPid session_pid,
- const char *user_name,
-@@ -227,8 +318,9 @@ gdm_session_record_login (GPid session_pid,
- #if defined(HAVE_GETUTXENT)
- g_debug ("Adding or updating utmp record for login");
- pututxline (&session_record);
--#elif defined(HAVE_LOGIN)
-- login (&session_record);
-+#else
-+ if (strcmp (session_record.ut_name, "(unknown)") != 0)
-+ write_utmp_login_manually (&session_record);
- #endif
- }
-
-@@ -270,8 +362,8 @@ gdm_session_record_logout (GPid session_pid,
- #if defined(HAVE_GETUTXENT)
- g_debug ("Adding or updating utmp record for logout");
- pututxline (&session_record);
--#elif defined(HAVE_LOGOUT)
-- logout (session_record.ut_line);
-+#else
-+ write_utmp_logout_manually (session_record.ut_line);
- #endif
- }
-
---
-2.13.0
-