Check if deriv->steps is NULL before freeing it
authorH.J. Lu <hjl.tools@gmail.com>
Fri, 7 Sep 2012 21:14:08 +0000 (14:14 -0700)
committerH.J. Lu <hjl.tools@gmail.com>
Fri, 7 Sep 2012 21:14:08 +0000 (14:14 -0700)
ChangeLog
iconv/gconv_db.c

index 6d3823e..77ae95c 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
 2012-09-07  H.J. Lu  <hongjiu.lu@intel.com>
 
+       * iconv/gconv_db.c (free_derivation): Check if deriv->steps
+       is NULL.
+
        * debug/Makefile (LDFLAGS-tst-chk4): Renamed to ...
        (LDLIBS-tst-chk4): This.
        (LDFLAGS-tst-chk5): Renamed to ...
index a081205..5bc7ff8 100644 (file)
@@ -193,10 +193,13 @@ free_derivation (void *p)
       }
 
   /* Free the name strings.  */
-  free ((char *) deriv->steps[0].__from_name);
-  free ((char *) deriv->steps[deriv->nsteps - 1].__to_name);
+  if (deriv->steps != NULL)
+    {
+      free ((char *) deriv->steps[0].__from_name);
+      free ((char *) deriv->steps[deriv->nsteps - 1].__to_name);
+      free ((struct __gconv_step *) deriv->steps);
+    }
 
-  free ((struct __gconv_step *) deriv->steps);
   free (deriv);
 }