summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorPablo Neira Ayuso <pablo@netfilter.org>2019-04-05 15:35:36 +0200
committerPablo Neira Ayuso <pablo@netfilter.org>2019-04-05 15:48:36 +0200
commit4ac11b890fe870d1c066783bccc235e1922dd431 (patch)
tree3a88c0e4c6e10f611c8ebe8aba364ec0b2d2156e /src
parent4d97f0a4eebd25d1639cd7c7ac2452445205a819 (diff)
src: missing destroy function in statement definitions
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to 'src')
-rw-r--r--src/ct.c12
-rw-r--r--src/exthdr.c7
-rw-r--r--src/meta.c6
-rw-r--r--src/payload.c7
-rw-r--r--src/statement.c21
-rw-r--r--src/xt.c1
6 files changed, 54 insertions, 0 deletions
diff --git a/src/ct.c b/src/ct.c
index e872857b..2256ce32 100644
--- a/src/ct.c
+++ b/src/ct.c
@@ -440,11 +440,17 @@ static void ct_stmt_print(const struct stmt *stmt, struct output_ctx *octx)
expr_print(stmt->ct.expr, octx);
}
+static void ct_stmt_destroy(struct stmt *stmt)
+{
+ expr_free(stmt->ct.expr);
+}
+
static const struct stmt_ops ct_stmt_ops = {
.type = STMT_CT,
.name = "ct",
.print = ct_stmt_print,
.json = ct_stmt_json,
+ .destroy = ct_stmt_destroy,
};
struct stmt *ct_stmt_alloc(const struct location *loc, enum nft_ct_keys key,
@@ -484,10 +490,16 @@ static void flow_offload_stmt_print(const struct stmt *stmt,
nft_print(octx, "flow add @%s", stmt->flow.table_name);
}
+static void flow_offload_stmt_destroy(struct stmt *stmt)
+{
+ xfree(stmt->flow.table_name);
+}
+
static const struct stmt_ops flow_offload_stmt_ops = {
.type = STMT_FLOW_OFFLOAD,
.name = "flow_offload",
.print = flow_offload_stmt_print,
+ .destroy = flow_offload_stmt_destroy,
};
struct stmt *flow_offload_stmt_alloc(const struct location *loc,
diff --git a/src/exthdr.c b/src/exthdr.c
index 91d2430a..0cd03198 100644
--- a/src/exthdr.c
+++ b/src/exthdr.c
@@ -104,11 +104,18 @@ static void exthdr_stmt_print(const struct stmt *stmt, struct output_ctx *octx)
expr_print(stmt->exthdr.val, octx);
}
+static void exthdr_stmt_destroy(struct stmt *stmt)
+{
+ expr_free(stmt->exthdr.expr);
+ expr_free(stmt->exthdr.val);
+}
+
static const struct stmt_ops exthdr_stmt_ops = {
.type = STMT_EXTHDR,
.name = "exthdr",
.print = exthdr_stmt_print,
.json = exthdr_stmt_json,
+ .destroy = exthdr_stmt_destroy,
};
struct stmt *exthdr_stmt_alloc(const struct location *loc,
diff --git a/src/meta.c b/src/meta.c
index 7e44a2a3..583e790f 100644
--- a/src/meta.c
+++ b/src/meta.c
@@ -607,11 +607,17 @@ static void meta_stmt_print(const struct stmt *stmt, struct output_ctx *octx)
expr_print(stmt->meta.expr, octx);
}
+static void meta_stmt_destroy(struct stmt *stmt)
+{
+ expr_free(stmt->meta.expr);
+}
+
static const struct stmt_ops meta_stmt_ops = {
.type = STMT_META,
.name = "meta",
.print = meta_stmt_print,
.json = meta_stmt_json,
+ .destroy = meta_stmt_destroy,
};
struct stmt *meta_stmt_alloc(const struct location *loc, enum nft_meta_keys key,
diff --git a/src/payload.c b/src/payload.c
index abe9315d..338a4b76 100644
--- a/src/payload.c
+++ b/src/payload.c
@@ -189,11 +189,18 @@ static void payload_stmt_print(const struct stmt *stmt, struct output_ctx *octx)
expr_print(stmt->payload.val, octx);
}
+static void payload_stmt_destroy(struct stmt *stmt)
+{
+ expr_free(stmt->payload.expr);
+ expr_free(stmt->payload.val);
+}
+
static const struct stmt_ops payload_stmt_ops = {
.type = STMT_PAYLOAD,
.name = "payload",
.print = payload_stmt_print,
.json = payload_stmt_json,
+ .destroy = payload_stmt_destroy,
};
struct stmt *payload_stmt_alloc(const struct location *loc,
diff --git a/src/statement.c b/src/statement.c
index b9324fd7..9b45b3c5 100644
--- a/src/statement.c
+++ b/src/statement.c
@@ -136,6 +136,7 @@ static void meter_stmt_destroy(struct stmt *stmt)
expr_free(stmt->meter.key);
expr_free(stmt->meter.set);
stmt_free(stmt->meter.stmt);
+ xfree(stmt->meter.name);
}
static const struct stmt_ops meter_stmt_ops = {
@@ -234,11 +235,17 @@ static void objref_stmt_print(const struct stmt *stmt, struct output_ctx *octx)
expr_print(stmt->objref.expr, octx);
}
+static void objref_stmt_destroy(struct stmt *stmt)
+{
+ expr_free(stmt->objref.expr);
+}
+
static const struct stmt_ops objref_stmt_ops = {
.type = STMT_OBJREF,
.name = "objref",
.print = objref_stmt_print,
.json = objref_stmt_json,
+ .destroy = objref_stmt_destroy,
};
struct stmt *objref_stmt_alloc(const struct location *loc)
@@ -443,11 +450,17 @@ static void queue_stmt_print(const struct stmt *stmt, struct output_ctx *octx)
}
+static void queue_stmt_destroy(struct stmt *stmt)
+{
+ expr_free(stmt->queue.queue);
+}
+
static const struct stmt_ops queue_stmt_ops = {
.type = STMT_QUEUE,
.name = "queue",
.print = queue_stmt_print,
.json = queue_stmt_json,
+ .destroy = queue_stmt_destroy,
};
struct stmt *queue_stmt_alloc(const struct location *loc)
@@ -519,11 +532,17 @@ static void reject_stmt_print(const struct stmt *stmt, struct output_ctx *octx)
}
}
+static void reject_stmt_destroy(struct stmt *stmt)
+{
+ expr_free(stmt->reject.expr);
+}
+
static const struct stmt_ops reject_stmt_ops = {
.type = STMT_REJECT,
.name = "reject",
.print = reject_stmt_print,
.json = reject_stmt_json,
+ .destroy = reject_stmt_destroy,
};
struct stmt *reject_stmt_alloc(const struct location *loc)
@@ -652,6 +671,7 @@ static void set_stmt_destroy(struct stmt *stmt)
{
expr_free(stmt->set.key);
expr_free(stmt->set.set);
+ stmt_free(stmt->set.stmt);
}
static const struct stmt_ops set_stmt_ops = {
@@ -691,6 +711,7 @@ static void map_stmt_destroy(struct stmt *stmt)
expr_free(stmt->map.key);
expr_free(stmt->map.data);
expr_free(stmt->map.set);
+ stmt_free(stmt->map.stmt);
}
static const struct stmt_ops map_stmt_ops = {
diff --git a/src/xt.c b/src/xt.c
index c80e1fc0..906b2fde 100644
--- a/src/xt.c
+++ b/src/xt.c
@@ -102,6 +102,7 @@ void xt_stmt_release(const struct stmt *stmt)
}
#endif
xfree(stmt->xt.entry);
+ xfree(stmt->xt.name);
}
#ifdef HAVE_LIBXTABLES