[PATCH] tests: avoid use of freed pointer

Jim Meyering jim at meyering.net
Tue Sep 20 16:35:30 CEST 2011


[spotted by coverity]

This is only in tests/, but easy to fix, so...
I've included extra context so you can see how var->value would
be used in the following atoi call.

>From cf9ae83fd2da8d7a289b048ef0feed4096f6d263 Mon Sep 17 00:00:00 2001
From: Jim Meyering <meyering at redhat.com>
Date: Tue, 20 Sep 2011 16:32:59 +0200
Subject: [PATCH] avoid use of free'd pointer

* asschk.c (set_type_var): Set var->value to NULL after freeing it,
to avoid subsequent use of freed pointer.
---
 tests/ChangeLog |    6 ++++++
 tests/asschk.c  |    5 ++++-
 2 files changed, 10 insertions(+), 1 deletions(-)

diff --git a/tests/ChangeLog b/tests/ChangeLog
index b2e95f3..aa93f07 100644
--- a/tests/ChangeLog
+++ b/tests/ChangeLog
@@ -1,6 +1,12 @@
+2011-09-20  Jim Meyering  <meyering at redhat.com>
+
+	avoid use of free'd pointer
+	* asschk.c (set_type_var): Set var->value to NULL after freeing it,
+	to avoid subsequent use of freed pointer.
+
 2009-10-13  Werner Koch  <wk at g10code.com>

 	* asschk.c (die): Replace this vararg macro by C-89 compliant
 	macros die_0, die_1, die_2 and die 3.  Change all callers.
 	Reported by Nelson H. F. Beebe.

diff --git a/tests/asschk.c b/tests/asschk.c
index 3eb2621..c0108e7 100644
--- a/tests/asschk.c
+++ b/tests/asschk.c
@@ -511,13 +511,16 @@ set_type_var (const char *name, const char *value, VARTYPE type)
       var = xcalloc (1, sizeof *var + strlen (name));
       strcpy (var->name, name);
       var->next = variable_list;
       variable_list = var;
     }
   else
-    free (var->value);
+    {
+      free (var->value);
+      var->value = NULL;
+    }

   if (var->type == VARTYPE_FD && var->value)
     {
       int fd;

       fd = atoi (var->value);
--
1.7.7.rc0.362.g5a14



More information about the Gnupg-devel mailing list