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; }