changeset 13033:0cbad7fa62eb

6893022 if_freenameindex crashes or leaks memory
author Renee Danson Sommerfeld <Renee.Sommerfeld@Oracle.COM>
date Thu, 05 Aug 2010 10:33:46 -0700
parents 1b6086d6d5a1
children 03fd5152c466
files usr/src/lib/libsocket/inet/interface_id.c
diffstat 1 files changed, 5 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/usr/src/lib/libsocket/inet/interface_id.c	Thu Aug 05 11:14:15 2010 -0600
+++ b/usr/src/lib/libsocket/inet/interface_id.c	Thu Aug 05 10:33:46 2010 -0700
@@ -18,9 +18,9 @@
  *
  * CDDL HEADER END
  */
+
 /*
- * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
- * Use is subject to license terms.
+ * Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
  */
 
 #include <stdio.h>
@@ -351,16 +351,14 @@
 void
 if_freenameindex(struct if_nameindex *ptr)
 {
+	struct if_nameindex *p;
 
 	if (ptr == NULL)
 		return;
 
-
 	/* First free the if_name member in each array element */
-	while (ptr->if_name != NULL) {
-		free(ptr->if_name);
-		ptr++;
-	}
+	for (p = ptr; p->if_name != NULL; p++)
+		free(p->if_name);
 
 	/* Now free up the array space */
 	free(ptr);