[nftables libnl] libnl: nft_log_expr: fix prefix leak

Patrick McHardy netfilter-cvslog-bounces at lists.netfilter.org
Fri Mar 20 18:13:46 CET 2009


Gitweb:		http://git.netfilter.org/cgi-bin/gitweb.cgi?p=libnl-nft.git;a=commit;h=fbe4f656c758b711b5f24d62d33fb563000bac7e
commit fbe4f656c758b711b5f24d62d33fb563000bac7e
Author:     Patrick McHardy <kaber at trash.net>
AuthorDate: Fri Mar 20 17:59:53 2009 +0100
Commit:     Patrick McHardy <kaber at trash.net>
CommitDate: Fri Mar 20 17:59:53 2009 +0100

    libnl: nft_log_expr: fix prefix leak
    
    Signed-off-by: Patrick McHardy <kaber at trash.net>
       via  fbe4f656c758b711b5f24d62d33fb563000bac7e (commit)
      from  d70b8153a31618fd49af97850dcc7bf329fbe0f5 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit fbe4f656c758b711b5f24d62d33fb563000bac7e
Author: Patrick McHardy <kaber at trash.net>
Date:   Fri Mar 20 17:59:53 2009 +0100

    libnl: nft_log_expr: fix prefix leak
    
    Signed-off-by: Patrick McHardy <kaber at trash.net>

-----------------------------------------------------------------------

 lib/netfilter/nft_log_expr.c |   13 ++++++++++---
 1 files changed, 10 insertions(+), 3 deletions(-)
Signed-off-by: Patrick McHardy <kaber at trash.net>

diff --git a/lib/netfilter/nft_log_expr.c b/lib/netfilter/nft_log_expr.c
index efb3406..533d8b8 100644
--- a/lib/netfilter/nft_log_expr.c
+++ b/lib/netfilter/nft_log_expr.c
@@ -22,7 +22,7 @@
 #include <netlink/netfilter/nft-expr-modules.h>
 
 struct nft_log_expr {
-	const char	*prefix;
+	char		*prefix;
 	unsigned int	group;
 	unsigned int	snaplen;
 	unsigned int	qthreshold;
@@ -57,6 +57,13 @@ static struct nft_log_expr *nft_log_expr_alloc(struct nfnl_nft_expr *expr)
 	return nft_log(expr);
 }
 
+static void nft_log_free_data(struct nfnl_nft_expr *expr)
+{
+	struct nft_log_expr *log = nft_log(expr);
+
+	free(log->prefix);
+}
+
 static int nft_log_msg_parser(struct nfnl_nft_expr *expr, struct nlattr *tb[])
 {
 	struct nft_log_expr *log;
@@ -129,7 +136,7 @@ int nfnl_nft_log_init(struct nfnl_nft_expr *expr)
 
 void nfnl_nft_log_set_prefix(struct nfnl_nft_expr *expr, const char *prefix)
 {
-	nft_log(expr)->prefix = prefix;
+	nft_log(expr)->prefix = strdup(prefix);
 }
 
 const char *nfnl_nft_log_get_prefix(const struct nfnl_nft_expr *expr)
@@ -172,7 +179,7 @@ static struct nft_expr_ops log_expr_ops = {
 	.eo_dump[NL_DUMP_DETAILS]	= nft_log_dump,
 	.eo_get_opts		= nft_log_get_opts,
 	.eo_msg_parser		= nft_log_msg_parser,
-	.eo_free_data		= NULL, //nft_log_free_data,
+	.eo_free_data		= nft_log_free_data,
 	.eo_clone		= NULL,
 	.eo_policy		= nft_log_policy,
 	.eo_maxattr		= NFTA_LOG_MAX,



More information about the netfilter-cvslog mailing list