From 9b2a3ebf5cfb4613b117ebb83abe92b93e759381 Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Tue, 9 Oct 2012 09:38:36 +0200 Subject: [PATCH] s3:smbd/utmp: remove ip address from utmp record 1. This was broken since Samba 3.2. when ipv6 support was added, it only worked for ipv6 addresses. 2. userspace tools only display the hostname field. 3. This is not really portable metze Signed-off-by: Michael Adam --- source3/configure.in | 19 ------------------- source3/smbd/proto.h | 6 ++---- source3/smbd/session.c | 2 -- source3/smbd/utmp.c | 38 ++++++-------------------------------- source3/wscript | 4 ---- 5 files changed, 8 insertions(+), 61 deletions(-) diff --git a/source3/configure.in b/source3/configure.in index ab54227e710..70632bc3cb4 100644 --- a/source3/configure.in +++ b/source3/configure.in @@ -2218,25 +2218,6 @@ if test x"$samba_cv_HAVE_UT_UT_EXIT" = x"yes"; then AC_DEFINE(HAVE_UT_UT_EXIT,1,[Whether the utmp struct has a property ut_exit]) fi -dnl Look for the IPv6 varient by preference. Many systems have both. -AC_CACHE_CHECK([for ut_addr_v6 in utmp],samba_cv_HAVE_UT_UT_ADDR_V6,[ -AC_TRY_COMPILE([#include -#include ], -[struct utmp ut; ut.ut_addr_v6[0] = 0;], -samba_cv_HAVE_UT_UT_ADDR_V6=yes,samba_cv_HAVE_UT_UT_ADDR_V6=no,samba_cv_HAVE_UT_UT_ADDR_V6=cross)]) -if test x"$samba_cv_HAVE_UT_UT_ADDR_V6" = x"yes"; then - AC_DEFINE(HAVE_UT_UT_ADDR_V6,1,[Whether the utmp struct has a property ut_addr_v6]) -fi - -AC_CACHE_CHECK([for ut_addr in utmp],samba_cv_HAVE_UT_UT_ADDR,[ -AC_TRY_COMPILE([#include -#include ], -[struct utmp ut; ut.ut_addr = 0;], -samba_cv_HAVE_UT_UT_ADDR=yes,samba_cv_HAVE_UT_UT_ADDR=no,samba_cv_HAVE_UT_UT_ADDR=cross)]) -if test x"$samba_cv_HAVE_UT_UT_ADDR" = x"yes"; then - AC_DEFINE(HAVE_UT_UT_ADDR,1,[Whether the utmp struct has a property ut_addr]) -fi - if test x$ac_cv_func_pututline = xyes ; then AC_CACHE_CHECK([whether pututline returns pointer],samba_cv_PUTUTLINE_RETURNS_UTMP,[ AC_TRY_COMPILE([#include diff --git a/source3/smbd/proto.h b/source3/smbd/proto.h index 809074c6f7d..f1b359f9179 100644 --- a/source3/smbd/proto.h +++ b/source3/smbd/proto.h @@ -1112,11 +1112,9 @@ uint64_t get_current_vuid(connection_struct *conn); /* The following definitions come from smbd/utmp.c */ void sys_utmp_claim(const char *username, const char *hostname, - const char *ip_addr_str, - const char *id_str, int id_num); + const char *id_str, int id_num); void sys_utmp_yield(const char *username, const char *hostname, - const char *ip_addr_str, - const char *id_str, int id_num); + const char *id_str, int id_num); /* The following definitions come from smbd/vfs.c */ diff --git a/source3/smbd/session.c b/source3/smbd/session.c index 47eafab9799..e7e7570f404 100644 --- a/source3/smbd/session.c +++ b/source3/smbd/session.c @@ -179,7 +179,6 @@ bool session_claim(struct smbd_server_connection *sconn, struct user_struct *vus if (lp_utmp()) { sys_utmp_claim(sessionid.username, sessionid.hostname, - sessionid.ip_addr_str, sessionid.id_str, sessionid.id_num); } @@ -219,7 +218,6 @@ void session_yield(struct user_struct *vuser) if (lp_utmp()) { sys_utmp_yield(sessionid.username, sessionid.hostname, - sessionid.ip_addr_str, sessionid.id_str, sessionid.id_num); } diff --git a/source3/smbd/utmp.c b/source3/smbd/utmp.c index 34b77616b6a..bb48d369465 100644 --- a/source3/smbd/utmp.c +++ b/source3/smbd/utmp.c @@ -115,13 +115,11 @@ Notes: */ void sys_utmp_claim(const char *username, const char *hostname, - const char *ip_addr_str, - const char *id_str, int id_num) + const char *id_str, int id_num) {} void sys_utmp_yield(const char *username, const char *hostname, - const char *ip_addr_str, - const char *id_str, int id_num) + const char *id_str, int id_num) {} #else /* WITH_UTMP */ @@ -499,7 +497,6 @@ static int ut_id_encode(int i, char *fourbyte) */ static bool sys_utmp_fill(struct utmp *u, const char *username, const char *hostname, - const char *ip_addr_str, const char *id_str, int id_num) { struct timeval timeval; @@ -550,27 +547,6 @@ static bool sys_utmp_fill(struct utmp *u, #if defined(HAVE_UT_UT_HOST) utmp_strcpy(u->ut_host, hostname, sizeof(u->ut_host)); #endif -#if defined(HAVE_IPV6) && defined(HAVE_UT_UT_ADDR_V6) - memset(&u->ut_addr_v6, '\0', sizeof(u->ut_addr_v6)); - if (ip_addr_str) { - struct in6_addr addr; - if (inet_pton(AF_INET6, ip_addr_str, &addr) > 0) { - memcpy(&u->ut_addr_v6, &addr, sizeof(addr)); - } - } -#elif defined(HAVE_UT_UT_ADDR) - memset(&u->ut_addr, '\0', sizeof(u->ut_addr)); - if (ip_addr_str) { - struct in_addr addr; - if (inet_pton(AF_INET, ip_addr_str, &addr) > 0) { - memcpy(&u->ut_addr, &addr, sizeof(addr)); - } - } - /* - * "(unsigned long) ut_addr" apparently exists on at least HP-UX 10.20. - * Volunteer to implement, please ... - */ -#endif #if defined(HAVE_UT_UT_ID) if (ut_id_encode(id_num, u->ut_id) != 0) { @@ -587,8 +563,7 @@ static bool sys_utmp_fill(struct utmp *u, ****************************************************************************/ void sys_utmp_yield(const char *username, const char *hostname, - const char *ip_addr_str, - const char *id_str, int id_num) + const char *id_str, int id_num) { struct utmp u; @@ -603,7 +578,7 @@ void sys_utmp_yield(const char *username, const char *hostname, u.ut_type = DEAD_PROCESS; #endif - if (!sys_utmp_fill(&u, username, hostname, ip_addr_str, id_str, id_num)) + if (!sys_utmp_fill(&u, username, hostname, id_str, id_num)) return; sys_utmp_update(&u, NULL, False); @@ -614,8 +589,7 @@ void sys_utmp_yield(const char *username, const char *hostname, ****************************************************************************/ void sys_utmp_claim(const char *username, const char *hostname, - const char *ip_addr_str, - const char *id_str, int id_num) + const char *id_str, int id_num) { struct utmp u; @@ -625,7 +599,7 @@ void sys_utmp_claim(const char *username, const char *hostname, u.ut_type = USER_PROCESS; #endif - if (!sys_utmp_fill(&u, username, hostname, ip_addr_str, id_str, id_num)) + if (!sys_utmp_fill(&u, username, hostname, id_str, id_num)) return; sys_utmp_update(&u, hostname, True); diff --git a/source3/wscript b/source3/wscript index 3874df5fbc8..56ab760750a 100644 --- a/source3/wscript +++ b/source3/wscript @@ -655,10 +655,6 @@ msg.msg_acctrightslen = sizeof(fd); define='HAVE_UT_UT_PID') conf.CHECK_STRUCTURE_MEMBER('struct utmp', 'ut_exit.e_exit', headers='utmp.h', define='HAVE_UT_UT_EXIT') - conf.CHECK_STRUCTURE_MEMBER('struct utmp', 'ut_addr_v6', headers='utmp.h', - define='HAVE_UT_UT_ADDR_V6') - conf.CHECK_STRUCTURE_MEMBER('struct utmp', 'ut_addr', headers='utmp.h', - define='HAVE_UT_UT_ADDR') conf.CHECK_STRUCTURE_MEMBER('struct utmpx', 'ut_syslen', headers='utmpx.h', define='HAVE_UX_UT_SYSLEN') conf.CHECK_CODE('struct utmp utarg; struct utmp *utreturn; utreturn = pututline(&utarg);', -- 2.11.4.GIT