aboutsummaryrefslogtreecommitdiff
path: root/sysutils
diff options
context:
space:
mode:
authorMartin Wilke <miwi@FreeBSD.org>2010-02-12 17:21:40 +0000
committerMartin Wilke <miwi@FreeBSD.org>2010-02-12 17:21:40 +0000
commit9da1747e8edb21da73d01f2e1764e918083af8be (patch)
treeb82488b1f00a0cfe85d4ec0d5826aa6832787d29 /sysutils
parent24bd50a87fbab547ad502e7a55e24dd6048f287b (diff)
downloadports-9da1747e8edb21da73d01f2e1764e918083af8be.tar.gz
ports-9da1747e8edb21da73d01f2e1764e918083af8be.zip
Notes
Diffstat (limited to 'sysutils')
-rw-r--r--sysutils/msyslog/Makefile4
-rw-r--r--sysutils/msyslog/files/utmpx-src-modules-om_classic.c70
2 files changed, 74 insertions, 0 deletions
diff --git a/sysutils/msyslog/Makefile b/sysutils/msyslog/Makefile
index 337df9fa0399..595f93d5d6d1 100644
--- a/sysutils/msyslog/Makefile
+++ b/sysutils/msyslog/Makefile
@@ -30,6 +30,10 @@ MANCOMPRESSED= yes
.include <bsd.port.pre.mk>
+.if ${OSVERSION} > 900006
+EXTRA_PATCHES= ${PATCHDIR}/utmpx-src-modules-om_classic.c
+.endif
+
.if defined(WITH_MYSQL)
USE_MYSQL= yes
MAN8+= om_mysql.8
diff --git a/sysutils/msyslog/files/utmpx-src-modules-om_classic.c b/sysutils/msyslog/files/utmpx-src-modules-om_classic.c
new file mode 100644
index 000000000000..f2947952492c
--- /dev/null
+++ b/sysutils/msyslog/files/utmpx-src-modules-om_classic.c
@@ -0,0 +1,70 @@
+--- src/modules/om_classic.c.orig 2010-01-25 16:36:53.000000000 -0800
++++ src/modules/om_classic.c 2010-01-25 16:40:31.000000000 -0800
+@@ -66,7 +66,7 @@
+ #include <string.h>
+ #include <syslog.h>
+ #include <unistd.h>
+-#include <utmp.h>
++#include <utmpx.h>
+ #include <netdb.h>
+ /* if _PATH_UTMP isn't defined, define it here... */
+ #ifndef _PATH_UTMP
+@@ -100,7 +100,7 @@
+ struct om_classic_ctx {
+ int fd;
+ union {
+- char f_uname[MAXUNAMES][UT_NAMESIZE+1];
++ char f_uname[MAXUNAMES][MAXLOGNAME+2];
+ struct {
+ char f_hname[MAXHOSTNAMELEN];
+ struct sockaddr f_addr;
+@@ -396,9 +396,9 @@
+ for (i = 0; i < MAXUNAMES && *p; i++) {
+ for (q = p; *q && *q != ','; )
+ q++;
+- (void)strncpy(c->f_un.f_uname[i], p, UT_NAMESIZE);
+- if ((q - p) > UT_NAMESIZE)
+- c->f_un.f_uname[i][UT_NAMESIZE] = '\0';
++ (void)strncpy(c->f_un.f_uname[i], p, MAXLOGNAME+1);
++ if ((q - p) > MAXLOGNAME+1)
++ c->f_un.f_uname[i][MAXLOGNAME+1] = '\0';
+ else
+ c->f_un.f_uname[i][q - p] = '\0';
+ while (*q == ',' || *q == ' ')
+@@ -456,24 +456,19 @@
+ {
+ static int reenter; /* avoid calling ourselves */
+ FILE *uf;
+- struct utmp ut;
++ struct utmpx ut;
+ int i;
+ char *p;
+ char line[sizeof(ut.ut_line) + 1];
+
+ if (reenter++)
+ return;
+- if ( (uf = fopen(_PATH_UTMP, "r")) == NULL) {
+- dprintf(MSYSLOG_SERIOUS, "om_classic: error opening "
+- "%s\n", _PATH_UTMP);
+- reenter = 0;
+- return;
+- }
++
+ /* NOSTRICT */
+ while (fread(&ut, sizeof(ut), 1, uf) == 1) {
+
+ #ifndef __linux__
+- if (ut.ut_name[0] == '\0')
++ if (ut.ut_user[0] == '\0')
+ #else
+ if ((ut.ut_type != USER_PROCESS && ut.ut_type != LOGIN_PROCESS) ||
+ ut.ut_line[0] == ':' /* linux logs users that are not logged in (?!) */)
+@@ -494,7 +489,7 @@
+ for (i = 0; i < MAXUNAMES; i++) {
+ if (!c->f_un.f_uname[i][0])
+ break;
+- if (!strncmp(c->f_un.f_uname[i], ut.ut_name,
++ if (!strncmp(c->f_un.f_uname[i], ut.ut_user,
+ UT_NAMESIZE)) {
+ if ((p = ttymsg(iov, 6, line, TTYMSGTIME))
+ != NULL) {