Module Name: src
Committed By: christos
Date: Tue Aug 28 09:10:28 UTC 2018
Modified Files:
src/crypto/dist/ipsec-tools/src/racoon: privsep.c
Log Message:
fix memory leaks: https://github.com/NetBSD/src/issues/6
To generate a diff of this commit:
cvs rdiff -u -r1.24 -r1.25 src/crypto/dist/ipsec-tools/src/racoon/privsep.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/crypto/dist/ipsec-tools/src/racoon/privsep.c
diff -u src/crypto/dist/ipsec-tools/src/racoon/privsep.c:1.24 src/crypto/dist/ipsec-tools/src/racoon/privsep.c:1.25
--- src/crypto/dist/ipsec-tools/src/racoon/privsep.c:1.24 Sat May 19 15:23:15 2018
+++ src/crypto/dist/ipsec-tools/src/racoon/privsep.c Tue Aug 28 05:10:28 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: privsep.c,v 1.24 2018/05/19 19:23:15 maxv Exp $ */
+/* $NetBSD: privsep.c,v 1.25 2018/08/28 09:10:28 christos Exp $ */
/* Id: privsep.c,v 1.15 2005/08/08 11:23:44 vanhu Exp */
@@ -917,7 +917,7 @@ privsep_eay_get_pkcs1privkey(path)
memcpy(msg + 1, path, msg->bufs.buflen[0]);
if (privsep_send(privsep_sock[1], msg, len) != 0)
- return NULL;
+ goto out;
if (privsep_recv(privsep_sock[1], &msg, &len) != 0)
return NULL;
@@ -1034,13 +1034,14 @@ privsep_script_exec(script, name, envp)
* And send it!
*/
if (privsep_send(privsep_sock[1], msg, msg->hdr.ac_len) != 0)
- return -1;
+ goto out;
if (privsep_recv(privsep_sock[1], &msg, &len) != 0)
return -1;
if (msg->hdr.ac_errno != 0) {
errno = msg->hdr.ac_errno;
+out:
racoon_free(msg);
return -1;
}
@@ -1081,7 +1082,7 @@ privsep_getpsk(str, keylen)
memcpy(data, &keylen, sizeof(keylen));
if (privsep_send(privsep_sock[1], msg, len) != 0)
- return NULL;
+ goto out;
if (privsep_recv(privsep_sock[1], &msg, &len) != 0)
return NULL;
@@ -1354,12 +1355,13 @@ privsep_xauth_login_system(usr, pwd)
/* frees msg */
if (privsep_send(privsep_sock[1], msg, len) != 0)
- return -1;
+ goto out;
if (privsep_recv(privsep_sock[1], &msg, &len) != 0)
return -1;
if (msg->hdr.ac_errno != 0) {
+out:
racoon_free(msg);
return -1;
}
@@ -1416,7 +1418,7 @@ privsep_accounting_system(port, raddr, u
/* frees msg */
if (privsep_send(privsep_sock[1], msg, len) != 0)
- return -1;
+ goto out;
if (privsep_recv(privsep_sock[1], &msg, &len) != 0)
return -1;
@@ -1664,7 +1666,7 @@ privsep_accounting_pam(port, inout)
/* frees msg */
if (privsep_send(privsep_sock[1], msg, len) != 0)
- return -1;
+ goto out;
if (privsep_recv(privsep_sock[1], &msg, &len) != 0)
return -1;
@@ -1734,7 +1736,7 @@ privsep_xauth_login_pam(port, raddr, usr
/* frees msg */
if (privsep_send(privsep_sock[1], msg, len) != 0)
- return -1;
+ goto out;
if (privsep_recv(privsep_sock[1], &msg, &len) != 0)
return -1;
@@ -1786,7 +1788,7 @@ privsep_cleanup_pam(port)
/* frees msg */
if (privsep_send(privsep_sock[1], msg, len) != 0)
- return;
+ goto out;
if (privsep_recv(privsep_sock[1], &msg, &len) != 0)
return;
@@ -1794,6 +1796,7 @@ privsep_cleanup_pam(port)
if (msg->hdr.ac_errno != 0)
errno = msg->hdr.ac_errno;
+out:
racoon_free(msg);
return;
}