Module Name:    src
Committed By:   spz
Date:           Mon Feb 13 07:40:24 UTC 2012

Modified Files:
        src/usr.sbin/syslogd: sign.c tls.c

Log Message:
fix resource leaks and NULL uses found by Coverity scan.
Releng-ok by riz


To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 src/usr.sbin/syslogd/sign.c
cvs rdiff -u -r1.8 -r1.9 src/usr.sbin/syslogd/tls.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/sign.c
diff -u src/usr.sbin/syslogd/sign.c:1.3 src/usr.sbin/syslogd/sign.c:1.4
--- src/usr.sbin/syslogd/sign.c:1.3	Sun Jan 18 10:35:26 2009
+++ src/usr.sbin/syslogd/sign.c	Mon Feb 13 07:40:24 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: sign.c,v 1.3 2009/01/18 10:35:26 lukem Exp $	*/
+/*	$NetBSD: sign.c,v 1.4 2012/02/13 07:40:24 spz Exp $	*/
 
 /*-
  * Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -66,7 +66,7 @@
  */
 
 #include <sys/cdefs.h>
-__RCSID("$NetBSD: sign.c,v 1.3 2009/01/18 10:35:26 lukem Exp $");
+__RCSID("$NetBSD: sign.c,v 1.4 2012/02/13 07:40:24 spz Exp $");
 
 #ifndef DISABLE_SIGN
 #include "syslogd.h"
@@ -258,6 +258,8 @@ sign_get_keys()
 		}
 		if (i2d_DSA_PUBKEY(dsa, &ptr_der_pubkey) <= 0) {
 			logerror("i2d_DSA_PUBKEY() failed");
+			free(der_pubkey);
+			free(pubkey_b64);
 			return false;
 		}
 		b64_ntop(der_pubkey, der_len, pubkey_b64, der_len*2);

Index: src/usr.sbin/syslogd/tls.c
diff -u src/usr.sbin/syslogd/tls.c:1.8 src/usr.sbin/syslogd/tls.c:1.9
--- src/usr.sbin/syslogd/tls.c:1.8	Fri Oct  7 10:50:01 2011
+++ src/usr.sbin/syslogd/tls.c	Mon Feb 13 07:40:24 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: tls.c,v 1.8 2011/10/07 10:50:01 joerg Exp $	*/
+/*	$NetBSD: tls.c,v 1.9 2012/02/13 07:40:24 spz Exp $	*/
 
 /*-
  * Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -45,7 +45,7 @@
  */
 
 #include <sys/cdefs.h>
-__RCSID("$NetBSD: tls.c,v 1.8 2011/10/07 10:50:01 joerg Exp $");
+__RCSID("$NetBSD: tls.c,v 1.9 2012/02/13 07:40:24 spz Exp $");
 
 #ifndef DISABLE_TLS
 #include "syslogd.h"
@@ -1139,7 +1139,8 @@ parse_tls_destination(const char *p, str
 		calloc(1, sizeof(*f->f_un.f_tls.tls_conn)))
 	 || !(f->f_un.f_tls.tls_conn->event = allocev())
 	 || !(f->f_un.f_tls.tls_conn->retryevent = allocev())) {
-		free(f->f_un.f_tls.tls_conn->event);
+		if (f->f_un.f_tls.tls_conn)
+			free(f->f_un.f_tls.tls_conn->event);
 		free(f->f_un.f_tls.tls_conn);
 		logerror("Couldn't allocate memory for TLS config");
 		return false;
@@ -1409,7 +1410,8 @@ dispatch_socket_accept(int fd, short eve
 	if (!(conn_info = calloc(1, sizeof(*conn_info)))
 	    || !(conn_info->event = allocev())
 	    || !(conn_info->retryevent = allocev())) {
-		free(conn_info->event);
+		if (conn_info)
+			free(conn_info->event);
 		free(conn_info);
 		SSL_free(ssl);
 		close(newsock);
@@ -1968,10 +1970,13 @@ write_x509files(EVP_PKEY *pkey, X509 *ce
 {
 	FILE *certfile, *keyfile;
 
-	if (!(umask(0177),(keyfile  = fopen(keyfilename,  "a")))
-	    || !(umask(0122),(certfile = fopen(certfilename, "a")))) {
-		logerror("Unable to write to files \"%s\" and \"%s\"",
-		    keyfilename, certfilename);
+	if (!(umask(0177),(keyfile  = fopen(keyfilename,  "a")))) {
+		logerror("Unable to write to file \"%s\"", keyfilename);
+		return false;
+	}
+	if (!(umask(0122),(certfile = fopen(certfilename, "a")))) {
+		logerror("Unable to write to file \"%s\"", certfilename);
+		(void)fclose(keyfile);
 		return false;
 	}
 	if (!PEM_write_PrivateKey(keyfile, pkey, NULL, NULL, 0, NULL, NULL))

Reply via email to