[OpenWrt-Devel] [PATCH] musl: provide wtmp compatibility stub for Linux-PAM.

Yousong Zhou yszhou4tech at gmail.com
Tue Jun 16 09:32:05 EDT 2015


Signed-off-by: Yousong Zhou <yszhou4tech at gmail.com>
---
 ...ide-wtmp-compatibility-stub-for-Linux-PAM.patch |  104 ++++++++++++++++++++
 1 file changed, 104 insertions(+)
 create mode 100644 toolchain/musl/patches/200-Provide-wtmp-compatibility-stub-for-Linux-PAM.patch

diff --git a/toolchain/musl/patches/200-Provide-wtmp-compatibility-stub-for-Linux-PAM.patch b/toolchain/musl/patches/200-Provide-wtmp-compatibility-stub-for-Linux-PAM.patch
new file mode 100644
index 0000000..fd9d9b1
--- /dev/null
+++ b/toolchain/musl/patches/200-Provide-wtmp-compatibility-stub-for-Linux-PAM.patch
@@ -0,0 +1,104 @@
+From 57f783cdc46dd11a186dd6fb78ebba1a3986cf6d Mon Sep 17 00:00:00 2001
+From: Yousong Zhou <yszhou4tech at gmail.com>
+Date: Tue, 16 Jun 2015 16:49:39 +0800
+Subject: [PATCH] Provide wtmp compatibility stub for Linux PAM.
+
+Adapted from a version by Raphael Cohn [1]
+
+ - Patch to musl to provide wtmp for Linux PAM,
+   http://www.openwall.com/lists/musl/2013/12/04/11
+
+Signed-off-by: Yousong Zhou <yszhou4tech at gmail.com>
+---
+ include/utmp.h    |    6 +-----
+ include/utmpx.h   |    9 +++++++--
+ src/legacy/utmp.c |   20 ++++++++++++++++++++
+ 3 files changed, 28 insertions(+), 7 deletions(-)
+ create mode 100644 src/legacy/utmp.c
+
+diff --git a/include/utmp.h b/include/utmp.h
+index 24e2da7..2338587 100644
+--- a/include/utmp.h
++++ b/include/utmp.h
+@@ -7,11 +7,6 @@ extern "C" {
+ 
+ #include <utmpx.h>
+ 
+-#define ACCOUNTING 9
+-#define UT_NAMESIZE 32
+-#define UT_HOSTSIZE 256
+-#define UT_LINESIZE 32
+-
+ struct lastlog {
+ 	time_t ll_time;
+ 	char ll_line[UT_LINESIZE];
+@@ -39,6 +34,7 @@ int login_tty(int);
+ 
+ #define _PATH_UTMP "/dev/null/utmp"
+ #define _PATH_WTMP "/dev/null/wtmp"
++#define _PATH_LASTLOG "/dev/null/lastlog"
+ 
+ #define UTMP_FILE _PATH_UTMP
+ #define WTMP_FILE _PATH_WTMP
+diff --git a/include/utmpx.h b/include/utmpx.h
+index f0c3b01..12da4da 100644
+--- a/include/utmpx.h
++++ b/include/utmpx.h
+@@ -14,14 +14,18 @@ extern "C" {
+ 
+ #include <bits/alltypes.h>
+ 
++#define UT_NAMESIZE 32
++#define UT_HOSTSIZE 256
++#define UT_LINESIZE 32
++
+ struct utmpx
+ {
+ 	short ut_type;
+ 	pid_t ut_pid;
+ 	char ut_line[32];
+ 	char ut_id[4];
+-	char ut_user[32];
+-	char ut_host[256];
++	char ut_user[UT_NAMESIZE];
++	char ut_host[UT_HOSTSIZE];
+ 	struct {
+ 		short __e_termination;
+ 		short __e_exit;
+@@ -54,6 +58,7 @@ void updwtmpx(const char *, const struct utmpx *);
+ #define LOGIN_PROCESS   6
+ #define USER_PROCESS    7
+ #define DEAD_PROCESS    8
++#define ACCOUNTING      9
+ 
+ #ifdef __cplusplus
+ }
+diff --git a/src/legacy/utmp.c b/src/legacy/utmp.c
+new file mode 100644
+index 0000000..4c94547
+--- /dev/null
++++ b/src/legacy/utmp.c
+@@ -0,0 +1,20 @@
++#include <utmp.h>
++#include <string.h>
++#include <unistd.h>
++#include <sys/time.h>
++#include "libc.h"
++
++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);
++}
+-- 
+1.7.10.4
+
-- 
1.7.10.4
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel



More information about the openwrt-devel mailing list