summaryrefslogtreecommitdiff
path: root/security/ipsec-tools/files/patch8-utmp.diff
blob: db37400f43197e671679e49aac8b737fc9a7a2fd (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
--- src/racoon/isakmp_cfg.c	21 Sep 2010 13:14:17 -0000	1.24
+++ src/racoon/isakmp_cfg.c	4 Aug 2010 09:16:58 -0000	1.23
@@ -38,7 +38,7 @@
 #include <sys/socket.h>
 #include <sys/queue.h>
 
-#include <utmpx.h>
+#include <utmp.h>
 #if defined(__APPLE__) && defined(__MACH__)
 #include <util.h>
 #endif
@@ -1661,7 +1661,8 @@ isakmp_cfg_accounting_system(port, raddr
 	int inout;
 {
 	int error = 0;
-	struct utmpx ut;
+	struct utmp ut;
+	char term[UT_LINESIZE];
 	char addr[NI_MAXHOST];
 	
 	if (usr == NULL || usr[0]=='\0') {
@@ -1670,33 +1671,36 @@ isakmp_cfg_accounting_system(port, raddr
 		return -1;
 	}
 
-	memset(&ut, 0, sizeof ut);
-	gettimeofday((struct timeval *)&ut.ut_tv, NULL);
-	snprintf(ut.ut_id, sizeof ut.ut_id, TERMSPEC, port);
+	sprintf(term, TERMSPEC, port);
 
 	switch (inout) {
 	case ISAKMP_CFG_LOGIN:
-		ut.ut_type = USER_PROCESS;
-		strncpy(ut.ut_user, usr, sizeof ut.ut_user);
+		strncpy(ut.ut_name, usr, UT_NAMESIZE);
+		ut.ut_name[UT_NAMESIZE - 1] = '\0';
+
+		strncpy(ut.ut_line, term, UT_LINESIZE);
+		ut.ut_line[UT_LINESIZE - 1] = '\0';
 
 		GETNAMEINFO_NULL(raddr, addr);
-		strncpy(ut.ut_host, addr, sizeof ut.ut_host);
+		strncpy(ut.ut_host, addr, UT_HOSTSIZE);
+		ut.ut_host[UT_HOSTSIZE - 1] = '\0';
 
+		ut.ut_time = time(NULL);
+ 
 		plog(LLV_INFO, LOCATION, NULL,
 			"Accounting : '%s' logging on '%s' from %s.\n",
-			ut.ut_user, ut.ut_id, addr);
+			ut.ut_name, ut.ut_line, ut.ut_host);
 
-		pututxline(&ut);
+		login(&ut);
 
 		break;
 	case ISAKMP_CFG_LOGOUT:	
-		ut.ut_type = DEAD_PROCESS;
 
 		plog(LLV_INFO, LOCATION, NULL,
 			"Accounting : '%s' unlogging from '%s'.\n",
-			usr, ut.ut_id);
+			usr, term);
 
-		pututxline(&ut);
+		logout(term);
 
 		break;
 	default: