svn commit: r298655 - head/sys/kgssapi

Conrad E. Meyer cem at FreeBSD.org
Tue Apr 26 18:11:46 UTC 2016


Author: cem
Date: Tue Apr 26 18:11:45 2016
New Revision: 298655
URL: https://svnweb.freebsd.org/changeset/base/298655

Log:
  kgssapi: Don't leak memory in error cases
  
  Reported by:	Coverity
  CIDs:		1007046, 1007047, 1007048
  Sponsored by:	EMC / Isilon Storage Division

Modified:
  head/sys/kgssapi/gssd_prot.c

Modified: head/sys/kgssapi/gssd_prot.c
==============================================================================
--- head/sys/kgssapi/gssd_prot.c	Tue Apr 26 18:08:51 2016	(r298654)
+++ head/sys/kgssapi/gssd_prot.c	Tue Apr 26 18:11:45 2016	(r298655)
@@ -101,8 +101,10 @@ xdr_gss_OID(XDR *xdrs, gss_OID *oidp)
 		} else {
 			oid = mem_alloc(sizeof(gss_OID_desc));
 			memset(oid, 0, sizeof(*oid));
-			if (!xdr_gss_OID_desc(xdrs, oid))
+			if (!xdr_gss_OID_desc(xdrs, oid)) {
+				mem_free(oid, sizeof(gss_OID_desc));
 				return (FALSE);
+			}
 			*oidp = oid;
 		}
 		break;
@@ -164,8 +166,10 @@ xdr_gss_OID_set(XDR *xdrs, gss_OID_set *
 		} else {
 			set = mem_alloc(sizeof(gss_OID_set_desc));
 			memset(set, 0, sizeof(*set));
-			if (!xdr_gss_OID_set_desc(xdrs, set))
+			if (!xdr_gss_OID_set_desc(xdrs, set)) {
+				mem_free(set, sizeof(gss_OID_set_desc));
 				return (FALSE);
+			}
 			*setp = set;
 		}
 		break;
@@ -224,8 +228,10 @@ xdr_gss_channel_bindings_t(XDR *xdrs, gs
 			    || !xdr_gss_buffer_desc(xdrs,
 				&ch->acceptor_address)
 			    || !xdr_gss_buffer_desc(xdrs,
-				&ch->application_data))
+				&ch->application_data)) {
+				mem_free(ch, sizeof(*ch));
 				return (FALSE);
+			}
 			*chp = ch;
 		}
 		break;


More information about the svn-src-all mailing list