classifier: Fix theoretical leak in classifier_destroy().
authorBen Pfaff <blp@nicira.com>
Fri, 21 Dec 2012 22:59:11 +0000 (14:59 -0800)
committerBen Pfaff <blp@nicira.com>
Thu, 10 Jan 2013 16:32:05 +0000 (08:32 -0800)
The open-coded version of destroy_table() in classifier_destroy() didn't
free the table's minimatch.  Use destroy_table() to do it properly.

This is only a theoretical leak because all the existing callers actually
remove all the rules from their classifiers before they destroy them
(outside of the tests/ directory, which I didn't examine) and so they don't
ever have anything left to remove in classifier_destroy().

Signed-off-by: Ben Pfaff <blp@nicira.com>
Acked-by: Ethan Jackson <ethan@nicira.com>
lib/classifier.c

index e5d226e..d1fe524 100644 (file)
@@ -146,9 +146,7 @@ classifier_destroy(struct classifier *cls)
         struct cls_table *table, *next_table;
 
         HMAP_FOR_EACH_SAFE (table, next_table, hmap_node, &cls->tables) {
-            hmap_destroy(&table->rules);
-            hmap_remove(&cls->tables, &table->hmap_node);
-            free(table);
+            destroy_table(cls, table);
         }
         hmap_destroy(&cls->tables);
     }