diff --git a/lib/asn1/der_free.c b/lib/asn1/der_free.c index 25d471d89..0c1f96de9 100644 --- a/lib/asn1/der_free.c +++ b/lib/asn1/der_free.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997 - 2001 Kungliga Tekniska Högskolan + * Copyright (c) 1997 - 2003 Kungliga Tekniska Högskolan * (Royal Institute of Technology, Stockholm, Sweden). * All rights reserved. * @@ -39,16 +39,19 @@ void free_general_string (heim_general_string *str) { free(*str); + *str = NULL; } void free_octet_string (heim_octet_string *k) { free(k->data); + k->data = NULL; } void free_oid (heim_oid *k) { free(k->components); + k->components = NULL; } diff --git a/lib/asn1/gen_free.c b/lib/asn1/gen_free.c index 0124cd88b..da17b4612 100644 --- a/lib/asn1/gen_free.c +++ b/lib/asn1/gen_free.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997 - 2000 Kungliga Tekniska Högskolan + * Copyright (c) 1997 - 2003 Kungliga Tekniska Högskolan * (Royal Institute of Technology, Stockholm, Sweden). * All rights reserved. * @@ -82,7 +82,8 @@ free_type (const char *name, const Type *t) if(m->optional) fprintf(codefile, "free(%s);\n" - "}\n",s); + "%s = NULL;\n" + "}\n", s, s); if (tag == -1) tag = m->val; free (s); @@ -100,7 +101,8 @@ free_type (const char *name, const Type *t) "}\n", name); fprintf(codefile, - "free((%s)->val);\n", name); + "free((%s)->val);\n" + "(%s)->val = NULL;\n", name, name); free(n); break; }