summaryrefslogtreecommitdiff
path: root/tests/test-classifier.c
diff options
context:
space:
mode:
authorBen Pfaff <blp@nicira.com>2012-12-21 14:59:35 -0800
committerBen Pfaff <blp@nicira.com>2013-01-10 08:32:11 -0800
commitf2f3f5cbde7c1b27f7eaeefd7165d8780fcc11d7 (patch)
tree78380bb44e3e7d7ede176cc1d4cdbf90423be61e /tests/test-classifier.c
parent0c09d44e6937e0eac39fd8b014a9bf0bd2412be8 (diff)
downloadopenvswitch-f2f3f5cbde7c1b27f7eaeefd7165d8780fcc11d7.tar.gz
tests: Fix memory leaks in test-classifier program.
Signed-off-by: Ben Pfaff <blp@nicira.com> Acked-by: Ethan Jackson <ethan@nicira.com>
Diffstat (limited to 'tests/test-classifier.c')
-rw-r--r--tests/test-classifier.c19
1 files changed, 17 insertions, 2 deletions
diff --git a/tests/test-classifier.c b/tests/test-classifier.c
index 79ca29c45..b1461ffe4 100644
--- a/tests/test-classifier.c
+++ b/tests/test-classifier.c
@@ -95,6 +95,15 @@ test_rule_from_cls_rule(const struct cls_rule *rule)
return rule ? CONTAINER_OF(rule, struct test_rule, cls_rule) : NULL;
}
+static void
+test_rule_destroy(struct test_rule *rule)
+{
+ if (rule) {
+ cls_rule_destroy(&rule->cls_rule);
+ free(rule);
+ }
+}
+
static struct test_rule *make_rule(int wc_fields, unsigned int priority,
int value_pat);
static void free_rule(struct test_rule *);
@@ -122,7 +131,7 @@ tcls_destroy(struct tcls *tcls)
size_t i;
for (i = 0; i < tcls->n_rules; i++) {
- free(tcls->rules[i]);
+ test_rule_destroy(tcls->rules[i]);
}
free(tcls->rules);
}
@@ -172,9 +181,11 @@ tcls_remove(struct tcls *cls, const struct test_rule *rule)
for (i = 0; i < cls->n_rules; i++) {
struct test_rule *pos = cls->rules[i];
if (pos == rule) {
- free(pos);
+ test_rule_destroy(pos);
+
memmove(&cls->rules[i], &cls->rules[i + 1],
sizeof *cls->rules * (cls->n_rules - i - 1));
+
cls->n_rules--;
return;
}
@@ -1221,6 +1232,8 @@ test_minimask_has_extra(int argc OVS_UNUSED, char *argv[] OVS_UNUSED)
minimask_destroy(&minimask);
}
+
+ minimask_destroy(&minicatchall);
}
static void
@@ -1260,6 +1273,8 @@ test_minimask_combine(int argc OVS_UNUSED, char *argv[] OVS_UNUSED)
minimask_destroy(&minimask);
minimask_destroy(&minimask2);
}
+
+ minimask_destroy(&minicatchall);
}
static const struct command commands[] = {