Module Name: src
Committed By: christos
Date: Tue May 15 01:22:51 UTC 2012
Modified Files:
src/usr.sbin/syslogd: syslogd.c
Log Message:
improve error handling.
To generate a diff of this commit:
cvs rdiff -u -r1.106 -r1.107 src/usr.sbin/syslogd/syslogd.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/usr.sbin/syslogd/syslogd.c
diff -u src/usr.sbin/syslogd/syslogd.c:1.106 src/usr.sbin/syslogd/syslogd.c:1.107
--- src/usr.sbin/syslogd/syslogd.c:1.106 Wed Mar 28 13:39:33 2012
+++ src/usr.sbin/syslogd/syslogd.c Mon May 14 21:22:50 2012
@@ -1,4 +1,4 @@
-/* $NetBSD: syslogd.c,v 1.106 2012/03/28 17:39:33 christos Exp $ */
+/* $NetBSD: syslogd.c,v 1.107 2012/05/15 01:22:50 christos Exp $ */
/*
* Copyright (c) 1983, 1988, 1993, 1994
@@ -39,7 +39,7 @@ __COPYRIGHT("@(#) Copyright (c) 1983, 19
#if 0
static char sccsid[] = "@(#)syslogd.c 8.3 (Berkeley) 4/4/94";
#else
-__RCSID("$NetBSD: syslogd.c,v 1.106 2012/03/28 17:39:33 christos Exp $");
+__RCSID("$NetBSD: syslogd.c,v 1.107 2012/05/15 01:22:50 christos Exp $");
#endif
#endif /* not lint */
@@ -471,7 +471,7 @@ getgroup:
if (funixsize == 0)
logpath_add(&LogPaths, &funixsize,
&funixmaxsize, _PATH_LOG);
- funix = (int *)malloc(sizeof(int) * funixsize);
+ funix = malloc(sizeof(*funix) * funixsize);
if (funix == NULL) {
logerror("Couldn't allocate funix descriptors");
die(0, 0, NULL);
@@ -505,9 +505,10 @@ getgroup:
(void) SSL_library_init();
OpenSSL_add_all_digests();
/* OpenSSL PRNG needs /dev/urandom, thus initialize before chroot() */
- if (!RAND_status())
+ if (!RAND_status()) {
+ errno = 0;
logerror("Unable to initialize OpenSSL PRNG");
- else {
+ } else {
DPRINTF(D_TLS, "Initializing PRNG\n");
}
#endif /* (!defined(DISABLE_TLS) && !defined(DISABLE_SIGN)) */
@@ -526,7 +527,7 @@ getgroup:
* All files are open, we can drop privileges and chroot
*/
DPRINTF(D_MISC, "Attempt to chroot to `%s'\n", root);
- if (chroot(root)) {
+ if (chroot(root) == -1) {
logerror("Failed to chroot to `%s'", root);
die(0, 0, NULL);
}
@@ -2194,7 +2195,9 @@ fprintlog(struct filed *f, struct buf_ms
&& (f->f_type != F_TLS)
&& (f->f_type != F_PIPE)
&& (f->f_type != F_FILE)) {
- logerror("Warning: unexpected message in buffer");
+ errno = 0;
+ logerror("Warning: unexpected message type %d in buffer",
+ f->f_type);
DELREF(buffer);
return;
}
@@ -2332,8 +2335,8 @@ fprintlog(struct filed *f, struct buf_ms
if ((f->f_file = p_open(f->f_un.f_pipe.f_pname,
&f->f_un.f_pipe.f_pid)) < 0) {
f->f_type = F_UNUSED;
- message_queue_freeall(f);
logerror("%s", f->f_un.f_pipe.f_pname);
+ message_queue_freeall(f);
break;
} else if (!qentry) /* prevent recursion */
SEND_QUEUE(f);
@@ -2362,8 +2365,8 @@ fprintlog(struct filed *f, struct buf_ms
if ((f->f_file = p_open(f->f_un.f_pipe.f_pname,
&f->f_un.f_pipe.f_pid)) < 0) {
f->f_type = F_UNUSED;
- message_queue_freeall(f);
logerror("%s", f->f_un.f_pipe.f_pname);
+ message_queue_freeall(f);
break;
}
if (writev(f->f_file, iov, v - iov) < 0) {
@@ -3801,6 +3804,7 @@ cfline(size_t linenum, const char *line,
error = getaddrinfo(f->f_un.f_forw.f_hname, "syslog", &hints,
&res);
if (error) {
+ errno = 0;
logerror("%s", gai_strerror(error));
break;
}
@@ -3954,8 +3958,8 @@ socksetup(int af, const char *hostname)
hints.ai_socktype = SOCK_DGRAM;
error = getaddrinfo(hostname, "syslog", &hints, &res);
if (error) {
- logerror("%s", gai_strerror(error));
errno = 0;
+ logerror("%s", gai_strerror(error));
die(0, 0, NULL);
}
@@ -4029,7 +4033,6 @@ p_open(char *prog, pid_t *rpid)
int pfd[2], nulldesc, i;
pid_t pid;
char *argv[4]; /* sh -c cmd NULL */
- char errmsg[200];
if (pipe(pfd) == -1)
return -1;
@@ -4084,10 +4087,8 @@ p_open(char *prog, pid_t *rpid)
*/
if (fcntl(pfd[1], F_SETFL, O_NONBLOCK) == -1) {
/* This is bad. */
- (void) snprintf(errmsg, sizeof(errmsg),
- "Warning: cannot change pipe to pid %d to "
+ logerror("Warning: cannot change pipe to pid %d to "
"non-blocking.", (int) pid);
- logerror("%s", errmsg);
}
*rpid = pid;
return pfd[1];
@@ -4112,7 +4113,6 @@ deadq_enter(pid_t pid, const char *name)
p = malloc(sizeof(*p));
if (p == NULL) {
- errno = 0;
logerror("panic: out of memory!");
exit(1);
}
@@ -4641,6 +4641,7 @@ copy_config_value_quoted(const char *key
return false;
q = *p += strlen(keyword);
if (!(q = strchr(*p, '"'))) {
+ errno = 0;
logerror("unterminated \"\n");
return false;
}
@@ -4665,6 +4666,7 @@ copy_config_value(const char *keyword, c
while (isspace((unsigned char)**p))
*p += 1;
if (**p != '=') {
+ errno = 0;
logerror("expected \"=\" in file %s, line %d", file, line);
return false;
}