sysklogd: update to 1.5
This commit is contained in:
parent
a9ad8896c1
commit
8ce33423ae
@ -1,5 +1,4 @@
|
||||
b379693c8b89c99994e58efd49f98a71 rotatelog
|
||||
ee4ba45c59bb1098c0b05b5546a46c2f sysklogd-1.4.1.patch
|
||||
d214aa40beabf7bdb0c9b3c64432c774 sysklogd-1.4.1.tar.gz
|
||||
e053094e8103165f98ddafe828f6ae4b sysklogd-1.5.tar.gz
|
||||
bf5c13b44ab9fa15cda9bfa9df9b584e syslog
|
||||
022ca2758664748ae096d57eac9ac555 syslog.conf
|
||||
|
@ -3,14 +3,13 @@
|
||||
# Maintainer: CRUX System Team, core-ports at crux dot nu
|
||||
|
||||
name=sysklogd
|
||||
version=1.4.1
|
||||
release=5
|
||||
version=1.5
|
||||
release=1
|
||||
source=(http://www.ibiblio.org/pub/Linux/system/daemons/$name-$version.tar.gz \
|
||||
rotatelog syslog syslog.conf $name-$version.patch)
|
||||
rotatelog syslog syslog.conf)
|
||||
|
||||
build() {
|
||||
cd $name-$version
|
||||
patch -p1 < ../$name-$version.patch
|
||||
mkdir -p $PKG/usr/sbin \
|
||||
$PKG/etc/cron/weekly \
|
||||
$PKG/var/log \
|
||||
|
@ -1,586 +0,0 @@
|
||||
diff -Nru sysklogd-1.4.1/Makefile sysklogd-1.4.1-new/Makefile
|
||||
--- sysklogd-1.4.1/Makefile 1998-10-12 22:25:15.000000000 +0200
|
||||
+++ sysklogd-1.4.1-new/Makefile 2004-09-21 23:00:34.656626400 +0200
|
||||
@@ -3,13 +3,13 @@
|
||||
CC= gcc
|
||||
#CFLAGS= -g -DSYSV -Wall
|
||||
#LDFLAGS= -g
|
||||
-CFLAGS= $(RPM_OPT_FLAGS) -O3 -DSYSV -fomit-frame-pointer -Wall -fno-strength-reduce
|
||||
-LDFLAGS= -s
|
||||
+CFLAGS= $(RPM_OPT_FLAGS) -DSYSV -D_GNU_SOURCE -Wall
|
||||
+LDFLAGS=
|
||||
|
||||
# Look where your install program is.
|
||||
INSTALL = /usr/bin/install
|
||||
-BINDIR = /usr/sbin
|
||||
-MANDIR = /usr/man
|
||||
+BINDIR = $(TOPDIR)/sbin
|
||||
+MANDIR = $(TOPDIR)/usr/man
|
||||
|
||||
# There is one report that under an all ELF system there may be a need to
|
||||
# explicilty link with libresolv.a. If linking syslogd fails you may wish
|
||||
@@ -106,17 +106,51 @@
|
||||
${CC} ${CFLAGS} -DTEST -o ksym_test.o -c ksym.c
|
||||
|
||||
clean:
|
||||
- rm -f *.o *.log *~ *.orig
|
||||
+ rm -f *.o *.log *~ *.orig sysklogd-*.tar.gz syslogd klogd
|
||||
|
||||
clobber: clean
|
||||
rm -f syslogd klogd ksym syslog_tst oops_test TAGS tsyslogd tklogd
|
||||
|
||||
install_exec: syslogd klogd
|
||||
- ${INSTALL} -m 500 -s syslogd ${BINDIR}/syslogd
|
||||
- ${INSTALL} -m 500 -s klogd ${BINDIR}/klogd
|
||||
+ ${INSTALL} -m 500 syslogd ${BINDIR}/syslogd
|
||||
+ ${INSTALL} -m 500 klogd ${BINDIR}/klogd
|
||||
|
||||
install_man:
|
||||
- ${INSTALL} -o ${MAN_OWNER} -g ${MAN_OWNER} -m 644 sysklogd.8 ${MANDIR}/man8/sysklogd.8
|
||||
- ${INSTALL} -o ${MAN_OWNER} -g ${MAN_OWNER} -m 644 syslogd.8 ${MANDIR}/man8/syslogd.8
|
||||
- ${INSTALL} -o ${MAN_OWNER} -g ${MAN_OWNER} -m 644 syslog.conf.5 ${MANDIR}/man5/syslog.conf.5
|
||||
- ${INSTALL} -o ${MAN_OWNER} -g ${MAN_OWNER} -m 644 klogd.8 ${MANDIR}/man8/klogd.8
|
||||
+ ${INSTALL} -m 644 sysklogd.8 ${MANDIR}/man8/sysklogd.8
|
||||
+ ${INSTALL} -m 644 syslogd.8 ${MANDIR}/man8/syslogd.8
|
||||
+ ${INSTALL} -m 644 syslog.conf.5 ${MANDIR}/man5/syslog.conf.5
|
||||
+ ${INSTALL} -m 644 klogd.8 ${MANDIR}/man8/klogd.8
|
||||
+
|
||||
+
|
||||
+## Red Hat specific additions
|
||||
+
|
||||
+VER1 = $(shell awk '/VERSION/ { print $$3 }' version.h | sed 's|"||g')
|
||||
+VER2 = $(shell awk '/PATCHLEVEL/ { print $$3 }' version.h | sed 's|"||g')
|
||||
+VERSION = $(VER1).$(VER2)
|
||||
+RELEASE = $(shell awk '/Release:/ { print $$2 }' sysklogd.spec.in)
|
||||
+CVSTAG = sysklogd-$(subst .,_,$(VERSION))-$(subst .,-,$(RELEASE))
|
||||
+
|
||||
+changelog:
|
||||
+ rcs2log | sed "s|@.*redhat\.com|@redhat.com|" | sed "s|@@|@|" | \
|
||||
+ sed "s|/mnt/devel/CVS/sysklogd/||g" > redhat/changenew
|
||||
+ mv redhat/ChangeLog redhat/ChangeLog.old
|
||||
+ cat redhat/changenew redhat/ChangeLog.old > redhat/ChangeLog
|
||||
+ rm -f redhat/changenew
|
||||
+
|
||||
+tag-archive:
|
||||
+ @cvs -Q tag -F $(CVSTAG)
|
||||
+
|
||||
+create-archive:
|
||||
+ @rm -rf /tmp/sysklogd
|
||||
+ @cd /tmp ; cvs -Q -d $(CVSROOT) export -r$(CVSTAG) sysklogd || echo "Um... export aborted."
|
||||
+ @sed 's/VERSIONSUBST/$(VERSION)/' < /tmp/sysklogd/sysklogd.spec.in > /tmp/sysklogd/sysklogd.spec
|
||||
+ @rm /tmp/sysklogd/sysklogd.spec.in
|
||||
+ @mv /tmp/sysklogd /tmp/sysklogd-$(VERSION)rh
|
||||
+ @cd /tmp ; tar -czSpf sysklogd-$(VERSION)rh.tar.gz sysklogd-$(VERSION)rh
|
||||
+ @rm -rf /tmp/sysklogd-$(VERSION)rh
|
||||
+ @cp /tmp/sysklogd-$(VERSION)rh.tar.gz .
|
||||
+ @rm -f /tmp/sysklogd-$(VERSION)rh.tar.gz
|
||||
+ @echo ""
|
||||
+ @echo "The final archive is in sysklogd-$(VERSION)rh.tar.gz"
|
||||
+
|
||||
+archive: clean tag-archive create-archive
|
||||
diff -Nru sysklogd-1.4.1/klogd.c sysklogd-1.4.1-new/klogd.c
|
||||
--- sysklogd-1.4.1/klogd.c 2001-03-11 20:40:10.000000000 +0100
|
||||
+++ sysklogd-1.4.1-new/klogd.c 2004-09-21 23:00:13.203887712 +0200
|
||||
@@ -275,6 +275,10 @@
|
||||
#define ksyslog klogctl
|
||||
#endif
|
||||
|
||||
+#ifndef _PATH_KLOG
|
||||
+#define _PATH_KLOG "/proc/kmsg"
|
||||
+#endif
|
||||
+
|
||||
#define LOG_BUFFER_SIZE 4096
|
||||
#define LOG_LINE_LENGTH 1000
|
||||
|
||||
@@ -291,7 +295,7 @@
|
||||
terminate = 0,
|
||||
caught_TSTP = 0,
|
||||
reload_symbols = 0,
|
||||
- console_log_level = -1;
|
||||
+ console_log_level = 6;
|
||||
|
||||
static int use_syscall = 0,
|
||||
one_shot = 0,
|
||||
@@ -509,8 +513,7 @@
|
||||
|
||||
|
||||
/* Set level of kernel console messaging.. */
|
||||
- if ( (console_log_level != -1)
|
||||
- && (ksyslog(8, NULL, console_log_level) < 0) && \
|
||||
+ if ( (ksyslog(8, NULL, console_log_level) < 0) && \
|
||||
(errno == EINVAL) )
|
||||
{
|
||||
/*
|
||||
@@ -887,8 +890,7 @@
|
||||
value = strtoul(sym_start+1, (char **) 0, 16);
|
||||
*(line-1) = '>'; /* put back delim */
|
||||
|
||||
- symbol = LookupSymbol(value, &sym);
|
||||
- if ( !symbol_lookup || symbol == (char *) 0 )
|
||||
+ if ( !symbol_lookup || (symbol = LookupSymbol(value, &sym)) == (char *)0 )
|
||||
{
|
||||
parse_state = PARSING_TEXT;
|
||||
break;
|
||||
@@ -938,7 +940,7 @@
|
||||
* messages into this fresh buffer.
|
||||
*/
|
||||
memset(log_buffer, '\0', sizeof(log_buffer));
|
||||
- if ( (rdcnt = ksyslog(2, log_buffer, sizeof(log_buffer))) < 0 )
|
||||
+ if ( (rdcnt = ksyslog(2, log_buffer, sizeof(log_buffer)-1)) < 0 )
|
||||
{
|
||||
if ( errno == EINTR )
|
||||
return;
|
||||
@@ -1143,8 +1145,11 @@
|
||||
if ( one_shot )
|
||||
{
|
||||
if (symbol_lookup) {
|
||||
- InitKsyms(symfile);
|
||||
- InitMsyms();
|
||||
+ symbol_lookup = (InitKsyms(symfile) == 1);
|
||||
+ symbol_lookup |= InitMsyms();
|
||||
+ if (symbol_lookup == 0) {
|
||||
+ Syslog(LOG_WARNING, "cannot find any symbols, turning off symbol lookups\n");
|
||||
+ }
|
||||
}
|
||||
if ( (logsrc = GetKernelLogSrc()) == kernel )
|
||||
LogKernelLine();
|
||||
@@ -1159,8 +1164,11 @@
|
||||
#endif
|
||||
logsrc = GetKernelLogSrc();
|
||||
if (symbol_lookup) {
|
||||
- InitKsyms(symfile);
|
||||
- InitMsyms();
|
||||
+ symbol_lookup = (InitKsyms(symfile) == 1);
|
||||
+ symbol_lookup |= InitMsyms();
|
||||
+ if (symbol_lookup == 0) {
|
||||
+ Syslog(LOG_WARNING, "cannot find any symbols, turning off symbol lookups\n");
|
||||
+ }
|
||||
}
|
||||
|
||||
/* The main loop. */
|
||||
diff -Nru sysklogd-1.4.1/ksym.c sysklogd-1.4.1-new/ksym.c
|
||||
--- sysklogd-1.4.1/ksym.c 2000-09-12 23:53:31.000000000 +0200
|
||||
+++ sysklogd-1.4.1-new/ksym.c 2004-09-21 23:00:13.204887560 +0200
|
||||
@@ -112,6 +112,7 @@
|
||||
#include <stdlib.h>
|
||||
#include <malloc.h>
|
||||
#include <sys/utsname.h>
|
||||
+#include <ctype.h>
|
||||
#include "klogd.h"
|
||||
#include "ksyms.h"
|
||||
|
||||
@@ -344,6 +345,7 @@
|
||||
if ( (sym_file = fopen(symfile, "r")) != (FILE *) 0 ) {
|
||||
if (CheckMapVersion(symfile) == 1)
|
||||
file = symfile;
|
||||
+ fclose(sym_file);
|
||||
}
|
||||
if (sym_file == (FILE *) 0 || file == (char *) 0) {
|
||||
sprintf (symfile, "%s", *mf);
|
||||
@@ -352,6 +354,7 @@
|
||||
if ( (sym_file = fopen(symfile, "r")) != (FILE *) 0 ) {
|
||||
if (CheckMapVersion(symfile) == 1)
|
||||
file = symfile;
|
||||
+ fclose(sym_file);
|
||||
}
|
||||
}
|
||||
|
||||
diff -Nru sysklogd-1.4.1/ksym_mod.c sysklogd-1.4.1-new/ksym_mod.c
|
||||
--- sysklogd-1.4.1/ksym_mod.c 2000-09-12 23:15:28.000000000 +0200
|
||||
+++ sysklogd-1.4.1-new/ksym_mod.c 2004-09-21 23:00:13.205887408 +0200
|
||||
@@ -93,7 +93,7 @@
|
||||
#include <linux/time.h>
|
||||
#include <linux/module.h>
|
||||
#else /* __GLIBC__ */
|
||||
-#include <linux/module.h>
|
||||
+#include "module.h"
|
||||
extern __off64_t lseek64 __P ((int __fd, __off64_t __offset, int __whence));
|
||||
extern int get_kernel_syms __P ((struct kernel_sym *__table));
|
||||
#endif /* __GLIBC__ */
|
||||
diff -Nru sysklogd-1.4.1/module.h sysklogd-1.4.1-new/module.h
|
||||
--- sysklogd-1.4.1/module.h 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ sysklogd-1.4.1-new/module.h 2004-09-21 23:00:13.205887408 +0200
|
||||
@@ -0,0 +1,62 @@
|
||||
+
|
||||
+/* Module definitions for klogd's module support */
|
||||
+struct kernel_sym
|
||||
+{
|
||||
+ unsigned long value;
|
||||
+ char name[60];
|
||||
+};
|
||||
+
|
||||
+struct module_symbol
|
||||
+{
|
||||
+ unsigned long value;
|
||||
+ const char *name;
|
||||
+};
|
||||
+
|
||||
+struct module_ref
|
||||
+{
|
||||
+ struct module *dep; /* "parent" pointer */
|
||||
+ struct module *ref; /* "child" pointer */
|
||||
+ struct module_ref *next_ref;
|
||||
+};
|
||||
+
|
||||
+struct module_info
|
||||
+{
|
||||
+ unsigned long addr;
|
||||
+ unsigned long size;
|
||||
+ unsigned long flags;
|
||||
+ long usecount;
|
||||
+};
|
||||
+
|
||||
+
|
||||
+typedef struct { volatile int counter; } atomic_t;
|
||||
+
|
||||
+struct module
|
||||
+{
|
||||
+ unsigned long size_of_struct; /* == sizeof(module) */
|
||||
+ struct module *next;
|
||||
+ const char *name;
|
||||
+ unsigned long size;
|
||||
+
|
||||
+ union
|
||||
+ {
|
||||
+ atomic_t usecount;
|
||||
+ long pad;
|
||||
+ } uc; /* Needs to keep its size - so says rth */
|
||||
+
|
||||
+ unsigned long flags; /* AUTOCLEAN et al */
|
||||
+
|
||||
+ unsigned nsyms;
|
||||
+ unsigned ndeps;
|
||||
+
|
||||
+ struct module_symbol *syms;
|
||||
+ struct module_ref *deps;
|
||||
+ struct module_ref *refs;
|
||||
+ int (*init)(void);
|
||||
+ void (*cleanup)(void);
|
||||
+ const struct exception_table_entry *ex_table_start;
|
||||
+ const struct exception_table_entry *ex_table_end;
|
||||
+#ifdef __alpha__
|
||||
+ unsigned long gp;
|
||||
+#endif
|
||||
+};
|
||||
+
|
||||
diff -Nru sysklogd-1.4.1/sysklogd.8 sysklogd-1.4.1-new/sysklogd.8
|
||||
--- sysklogd-1.4.1/sysklogd.8 2001-03-11 20:35:51.000000000 +0100
|
||||
+++ sysklogd-1.4.1-new/sysklogd.8 2004-09-21 23:00:13.206887256 +0200
|
||||
@@ -30,6 +30,7 @@
|
||||
.I domainlist
|
||||
]
|
||||
.RB [ " \-v " ]
|
||||
+.RB [ " \-x " ]
|
||||
.LP
|
||||
.SH DESCRIPTION
|
||||
.B Sysklogd
|
||||
@@ -152,6 +153,11 @@
|
||||
.TP
|
||||
.B "\-v"
|
||||
Print version and exit.
|
||||
+.TP
|
||||
+.B "\-x"
|
||||
+Disable name lookups when receiving remote messages.
|
||||
+This avoids deadlocks when the nameserver is running on
|
||||
+the same machine that runs the syslog daemon.
|
||||
.LP
|
||||
.SH SIGNALS
|
||||
.B Syslogd
|
||||
diff -Nru sysklogd-1.4.1/syslog_tst.c sysklogd-1.4.1-new/syslog_tst.c
|
||||
--- sysklogd-1.4.1/syslog_tst.c 1997-06-02 19:21:41.000000000 +0200
|
||||
+++ sysklogd-1.4.1-new/syslog_tst.c 2004-09-21 23:00:13.206887256 +0200
|
||||
@@ -42,7 +42,7 @@
|
||||
if ( (nl = strrchr(bufr, '\n')) != \
|
||||
(char *) 0)
|
||||
*nl = '\0';
|
||||
- syslog(LOG_INFO, bufr);
|
||||
+ syslog(LOG_INFO, "%s", bufr);
|
||||
logged += strlen(bufr);
|
||||
if ( logged > 1024 )
|
||||
{
|
||||
@@ -54,7 +54,7 @@
|
||||
}
|
||||
else
|
||||
while (argc-- > 1)
|
||||
- syslog(LOG_INFO, argv++[1]);
|
||||
+ syslog(LOG_INFO, "%s", argv++[1]);
|
||||
}
|
||||
else
|
||||
{
|
||||
diff -Nru sysklogd-1.4.1/syslogd.c sysklogd-1.4.1-new/syslogd.c
|
||||
--- sysklogd-1.4.1/syslogd.c 2001-03-11 20:40:10.000000000 +0100
|
||||
+++ sysklogd-1.4.1-new/syslogd.c 2004-09-21 23:00:13.209886800 +0200
|
||||
@@ -637,8 +637,8 @@
|
||||
* in seconds after previous message is logged. After each flush,
|
||||
* we move to the next interval until we reach the largest.
|
||||
*/
|
||||
-int repeatinterval[] = { 30, 60 }; /* # of secs before flush */
|
||||
-#define MAXREPEAT ((sizeof(repeatinterval) / sizeof(repeatinterval[0])) - 1)
|
||||
+time_t repeatinterval[] = { 30, 60 }; /* # of secs before flush */
|
||||
+#define MAXREPEAT ((int) ((sizeof(repeatinterval) / sizeof(repeatinterval[0])) - 1))
|
||||
#define REPEATTIME(f) ((f)->f_time + repeatinterval[(f)->f_repeatcount])
|
||||
#define BACKOFF(f) { if (++(f)->f_repeatcount > MAXREPEAT) \
|
||||
(f)->f_repeatcount = MAXREPEAT; \
|
||||
@@ -730,6 +730,7 @@
|
||||
int MarkInterval = 20 * 60; /* interval between marks in seconds */
|
||||
int MarkSeq = 0; /* mark sequence number */
|
||||
int NoFork = 0; /* don't fork - don't run in daemon mode */
|
||||
+int DisableDNS = 0; /* don't look up IP addresses of incoming messages */
|
||||
int AcceptRemote = 0; /* receive messages that come via UDP */
|
||||
char **StripDomains = NULL; /* these domains may be stripped before writing logs */
|
||||
char **LocalHosts = NULL; /* these hosts are logged with their hostname */
|
||||
@@ -743,7 +744,7 @@
|
||||
char **crunch_list(char *list);
|
||||
int usage(void);
|
||||
void untty(void);
|
||||
-void printchopped(const char *hname, char *msg, int len, int fd);
|
||||
+void printchopped(const char *hname, char *msg, size_t len, int fd);
|
||||
void printline(const char *hname, char *msg);
|
||||
void printsys(char *msg);
|
||||
void logmsg(int pri, char *msg, const char *from, int flags);
|
||||
@@ -786,7 +787,7 @@
|
||||
int len, num_fds;
|
||||
#else /* __GLIBC__ */
|
||||
#ifndef TESTING
|
||||
- size_t len;
|
||||
+ socklen_t len;
|
||||
#endif
|
||||
int num_fds;
|
||||
#endif /* __GLIBC__ */
|
||||
@@ -829,7 +830,7 @@
|
||||
funix[i] = -1;
|
||||
}
|
||||
|
||||
- while ((ch = getopt(argc, argv, "a:dhf:l:m:np:rs:v")) != EOF)
|
||||
+ while ((ch = getopt(argc, argv, "a:dhf:l:m:np:rs:vx")) != EOF)
|
||||
switch((char)ch) {
|
||||
case 'a':
|
||||
if (nfunix < MAXFUNIX)
|
||||
@@ -877,6 +878,9 @@
|
||||
case 'v':
|
||||
printf("syslogd %s.%s\n", VERSION, PATCHLEVEL);
|
||||
exit (0);
|
||||
+ case 'x':
|
||||
+ DisableDNS = 1;
|
||||
+ break;
|
||||
case '?':
|
||||
default:
|
||||
usage();
|
||||
@@ -890,11 +894,11 @@
|
||||
dprintf("Checking pidfile.\n");
|
||||
if (!check_pid(PidFile))
|
||||
{
|
||||
+ signal (SIGTERM, doexit);
|
||||
if (fork()) {
|
||||
/*
|
||||
* Parent process
|
||||
*/
|
||||
- signal (SIGTERM, doexit);
|
||||
sleep(300);
|
||||
/*
|
||||
* Not reached unless something major went wrong. 5
|
||||
@@ -906,6 +910,7 @@
|
||||
*/
|
||||
exit(1);
|
||||
}
|
||||
+ signal (SIGTERM, SIG_DFL);
|
||||
num_fds = getdtablesize();
|
||||
for (i= 0; i < num_fds; i++)
|
||||
(void) close(i);
|
||||
@@ -1074,9 +1079,9 @@
|
||||
(fd_set *) NULL, (struct timeval *) NULL);
|
||||
if ( restart )
|
||||
{
|
||||
+ restart = 0;
|
||||
dprintf("\nReceived SIGHUP, reloading syslogd.\n");
|
||||
init();
|
||||
- restart = 0;
|
||||
continue;
|
||||
}
|
||||
if (nfds == 0) {
|
||||
@@ -1145,8 +1150,7 @@
|
||||
dprintf("INET socket error: %d = %s.\n", \
|
||||
errno, strerror(errno));
|
||||
logerror("recvfrom inet");
|
||||
- /* should be harmless now that we set
|
||||
- * BSDCOMPAT on the socket */
|
||||
+ /* should be harmless */
|
||||
sleep(10);
|
||||
}
|
||||
}
|
||||
@@ -1174,7 +1178,7 @@
|
||||
|
||||
int usage()
|
||||
{
|
||||
- fprintf(stderr, "usage: syslogd [-drvh] [-l hostlist] [-m markinterval] [-n] [-p path]\n" \
|
||||
+ fprintf(stderr, "usage: syslogd [-drvxh] [-l hostlist] [-m markinterval] [-n] [-p path]\n" \
|
||||
" [-s domainlist] [-f conffile]\n");
|
||||
exit(1);
|
||||
}
|
||||
@@ -1232,15 +1236,6 @@
|
||||
close(fd);
|
||||
return -1;
|
||||
}
|
||||
- /* We need to enable BSD compatibility. Otherwise an attacker
|
||||
- * could flood our log files by sending us tons of ICMP errors.
|
||||
- */
|
||||
- if (setsockopt(fd, SOL_SOCKET, SO_BSDCOMPAT, \
|
||||
- (char *) &on, sizeof(on)) < 0) {
|
||||
- logerror("setsockopt(BSDCOMPAT), suspending inet");
|
||||
- close(fd);
|
||||
- return -1;
|
||||
- }
|
||||
if (bind(fd, (struct sockaddr *) &sin, sizeof(sin)) < 0) {
|
||||
logerror("bind, suspending inet");
|
||||
close(fd);
|
||||
@@ -1254,30 +1249,26 @@
|
||||
crunch_list(list)
|
||||
char *list;
|
||||
{
|
||||
- int count, i;
|
||||
+ int i, m, n;
|
||||
char *p, *q;
|
||||
char **result = NULL;
|
||||
|
||||
p = list;
|
||||
|
||||
/* strip off trailing delimiters */
|
||||
- while (p[strlen(p)-1] == LIST_DELIMITER) {
|
||||
- count--;
|
||||
+ while (*p && p[strlen(p)-1] == LIST_DELIMITER)
|
||||
p[strlen(p)-1] = '\0';
|
||||
- }
|
||||
/* cut off leading delimiters */
|
||||
- while (p[0] == LIST_DELIMITER) {
|
||||
- count--;
|
||||
+ while (p[0] == LIST_DELIMITER)
|
||||
p++;
|
||||
- }
|
||||
|
||||
- /* count delimiters to calculate elements */
|
||||
- for (count=i=0; p[i]; i++)
|
||||
- if (p[i] == LIST_DELIMITER) count++;
|
||||
+ /* count delimiters to calculate the number of elements */
|
||||
+ for (n = i = 0; p[i]; i++)
|
||||
+ if (p[i] == LIST_DELIMITER) n++;
|
||||
|
||||
- if ((result = (char **)malloc(sizeof(char *) * count+2)) == NULL) {
|
||||
+ if ((result = (char **)malloc(sizeof(char *) * (n + 2))) == NULL) {
|
||||
printf ("Sorry, can't get enough memory, exiting.\n");
|
||||
- exit(0);
|
||||
+ exit(1);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -1285,30 +1276,28 @@
|
||||
* characters are different from any delimiters,
|
||||
* so we don't have to care about this.
|
||||
*/
|
||||
- count = 0;
|
||||
- while ((q=strchr(p, LIST_DELIMITER))) {
|
||||
- result[count] = (char *) malloc((q - p + 1) * sizeof(char));
|
||||
- if (result[count] == NULL) {
|
||||
+ m = 0;
|
||||
+ while ((q = strchr(p, LIST_DELIMITER)) && m < n) {
|
||||
+ result[m] = (char *) malloc((q - p + 1) * sizeof(char));
|
||||
+ if (result[m] == NULL) {
|
||||
printf ("Sorry, can't get enough memory, exiting.\n");
|
||||
- exit(0);
|
||||
+ exit(1);
|
||||
}
|
||||
- strncpy(result[count], p, q - p);
|
||||
- result[count][q - p] = '\0';
|
||||
+ memcpy(result[m], p, q - p);
|
||||
+ result[m][q - p] = '\0';
|
||||
p = q; p++;
|
||||
- count++;
|
||||
+ m++;
|
||||
}
|
||||
- if ((result[count] = \
|
||||
- (char *)malloc(sizeof(char) * strlen(p) + 1)) == NULL) {
|
||||
+ if ((result[m] = strdup(p)) == NULL) {
|
||||
printf ("Sorry, can't get enough memory, exiting.\n");
|
||||
- exit(0);
|
||||
+ exit(1);
|
||||
}
|
||||
- strcpy(result[count],p);
|
||||
- result[++count] = NULL;
|
||||
+ result[++m] = NULL;
|
||||
|
||||
#if 0
|
||||
- count=0;
|
||||
- while (result[count])
|
||||
- dprintf ("#%d: %s\n", count, StripDomains[count++]);
|
||||
+ m = 0;
|
||||
+ while (result[m])
|
||||
+ dprintf ("#%d: %s\n", m, result[m++]);
|
||||
#endif
|
||||
return result;
|
||||
}
|
||||
@@ -1346,7 +1335,7 @@
|
||||
void printchopped(hname, msg, len, fd)
|
||||
const char *hname;
|
||||
char *msg;
|
||||
- int len;
|
||||
+ size_t len;
|
||||
int fd;
|
||||
{
|
||||
auto int ptlngth;
|
||||
@@ -1446,6 +1435,7 @@
|
||||
while ((c = *p++) && q < &line[sizeof(line) - 4]) {
|
||||
if (c == '\n')
|
||||
*q++ = ' ';
|
||||
+#if 0
|
||||
else if (c < 040) {
|
||||
*q++ = '^';
|
||||
*q++ = c ^ 0100;
|
||||
@@ -1454,7 +1444,9 @@
|
||||
*q++ = '0' + ((c & 0300) >> 6);
|
||||
*q++ = '0' + ((c & 0070) >> 3);
|
||||
*q++ = '0' + (c & 0007);
|
||||
- } else
|
||||
+ }
|
||||
+#endif
|
||||
+ else
|
||||
*q++ = c;
|
||||
}
|
||||
*q = '\0';
|
||||
@@ -1839,7 +1831,7 @@
|
||||
#else
|
||||
&& e == EBADF) {
|
||||
#endif
|
||||
- f->f_file = open(f->f_un.f_fname, O_WRONLY|O_APPEND|O_NOCTTY);
|
||||
+ f->f_file = open(f->f_un.f_fname, O_WRONLY|O_APPEND|O_NOCTTY|O_LARGEFILE);
|
||||
if (f->f_file < 0) {
|
||||
f->f_type = F_UNUSED;
|
||||
logerror(f->f_un.f_fname);
|
||||
@@ -1929,7 +1921,7 @@
|
||||
/* is this slot used? */
|
||||
if (ut.ut_name[0] == '\0')
|
||||
continue;
|
||||
- if (ut.ut_type == LOGIN_PROCESS)
|
||||
+ if (ut.ut_type != USER_PROCESS)
|
||||
continue;
|
||||
if (!(strcmp (ut.ut_name,"LOGIN"))) /* paranoia */
|
||||
continue;
|
||||
@@ -2013,7 +2005,10 @@
|
||||
dprintf("Malformed from address.\n");
|
||||
return ("???");
|
||||
}
|
||||
- hp = gethostbyaddr((char *) &f->sin_addr, sizeof(struct in_addr), \
|
||||
+ if (DisableDNS)
|
||||
+ hp = 0;
|
||||
+ else
|
||||
+ hp = gethostbyaddr((char *) &f->sin_addr, sizeof(struct in_addr), \
|
||||
f->sin_family);
|
||||
if (hp == 0) {
|
||||
dprintf("Host name for your address (%s) unknown.\n",
|
||||
@@ -2640,7 +2635,7 @@
|
||||
f->f_file = open(++p, O_RDWR|O_NONBLOCK);
|
||||
f->f_type = F_PIPE;
|
||||
} else {
|
||||
- f->f_file = open(p, O_WRONLY|O_APPEND|O_CREAT|O_NOCTTY,
|
||||
+ f->f_file = open(p, O_WRONLY|O_APPEND|O_CREAT|O_NOCTTY|O_LARGEFILE,
|
||||
0644);
|
||||
f->f_type = F_FILE;
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user