changeset 9041:a02891391cbe

6813215 cred reference leak in tsol_get_packet_label
author Erik Nordmark <Erik.Nordmark@Sun.COM>
date Sat, 14 Mar 2009 10:55:54 -0700
parents c8304f7f1a24
children 5639ca111a18
files usr/src/uts/common/inet/ip/tnet.c
diffstat 1 files changed, 4 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/usr/src/uts/common/inet/ip/tnet.c	Sat Mar 14 12:27:57 2009 -0400
+++ b/usr/src/uts/common/inet/ip/tnet.c	Sat Mar 14 10:55:54 2009 -0700
@@ -828,20 +828,18 @@
 	credp = msg_extractcred(mp, &cpid);
 	if (credp == NULL) {
 		credp = newcred_from_bslabel(&sl, doi, KM_NOSLEEP);
-		if (credp == NULL)
-			return (B_FALSE);
-		mblk_setcred(mp, credp, cpid);
 	} else {
 		cred_t	*newcr;
 
 		newcr = copycred_from_bslabel(credp, &sl, doi,
 		    KM_NOSLEEP);
 		crfree(credp);
-		if (newcr == NULL)
-			return (B_FALSE);
-		mblk_setcred(mp, newcr, cpid);
 		credp = newcr;
 	}
+	if (credp == NULL)
+		return (B_FALSE);
+	mblk_setcred(mp, credp, cpid);
+	crfree(credp);			/* mblk has ref on cred */
 
 	/*
 	 * If the source was unlabeled, then flag as such,