From 774ce5b486c495269afda8799d26dfd8d92a3c62 Mon Sep 17 00:00:00 2001 From: Thierry Vignaud Date: Sun, 8 Jan 2012 00:42:25 +0000 Subject: (free_*) fix segfaulting when calling usb_probe() more than once --- NEWS | 1 + names.c | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/NEWS b/NEWS index 4ce7b4e..af4c99f 100644 --- a/NEWS +++ b/NEWS @@ -1,4 +1,5 @@ - fix double free +- fix segfaulting when calling usb_probe() more than once Version 0.11.4 - 5 January 2012, Thierry Vignaud diff --git a/names.c b/names.c index 480f579..25763d5 100644 --- a/names.c +++ b/names.c @@ -496,6 +496,7 @@ static void free_vendor(void) for (i = 0; i < HASHSZ; i++) { cur = vendors[i]; + vendors[i] = NULL; while (cur) { tmp = cur; cur = cur->next; @@ -511,6 +512,7 @@ static void free_product(void) for (i = 0; i < HASHSZ; i++) { cur = products[i]; + products[i] = NULL; while (cur) { tmp = cur; cur = cur->next; @@ -526,6 +528,7 @@ static void free_class(void) for (i = 0; i < HASHSZ; i++) { cur = classes[i]; + classes[i] = NULL; while (cur) { tmp = cur; cur = cur->next; @@ -541,6 +544,7 @@ static void free_subclass(void) for (i = 0; i < HASHSZ; i++) { cur = subclasses[i]; + subclasses[i] = NULL; while (cur) { tmp = cur; cur = cur->next; @@ -556,6 +560,7 @@ static void free_protocol(void) for (i = 0; i < HASHSZ; i++) { cur = protocols[i]; + protocols[i] = NULL; while (cur) { tmp = cur; cur = cur->next; @@ -571,6 +576,7 @@ static void free_audioterminal(void) for (i = 0; i < HASHSZ; i++) { cur = audioterminals[i]; + audioterminals[i] = NULL; while (cur) { tmp = cur; cur = cur->next; @@ -587,6 +593,7 @@ static void free_videoterminal(void) for (i = 0; i < HASHSZ; i++) { cur = videoterminals[i]; + videoterminals[i] = NULL; while (cur) { tmp = cur; cur = cur->next; @@ -602,6 +609,7 @@ static void _free_genericstrtable(struct genericstrtable *t[HASHSZ]) for (i = 0; i < HASHSZ; i++) { cur = t[i]; + t[i] = NULL; while (cur) { tmp = cur; cur = cur->next; -- cgit v1.2.1