diff options
author | Pablo Neira Ayuso <pablo@netfilter.org> | 2011-02-18 12:15:52 +0100 |
---|---|---|
committer | Pablo Neira Ayuso <pablo@netfilter.org> | 2011-02-18 12:15:52 +0100 |
commit | 4dd7a3c15830aa21548716798171e67cb14bca49 (patch) | |
tree | 0b347c499aa2adcf7367061d09cf0e70399a4464 /src/sync-mode.c | |
parent | 3bb13acbff0983960e06eb33e0daa98c3dab472c (diff) | |
download | conntrack-tools-4dd7a3c15830aa21548716798171e67cb14bca49.tar.gz conntrack-tools-4dd7a3c15830aa21548716798171e67cb14bca49.zip |
conntrackd: remove use of deprecated nfct_maxsize()
This patch removes the use of nfct_maxsize() and several abusive
stack-based allocations.
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to 'src/sync-mode.c')
-rw-r--r-- | src/sync-mode.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/src/sync-mode.c b/src/sync-mode.c index 4b48449..5351110 100644 --- a/src/sync-mode.c +++ b/src/sync-mode.c @@ -43,8 +43,7 @@ static void do_channel_handler_step(int i, struct nethdr *net, size_t remain) { - char __ct[nfct_maxsize()]; - struct nf_conntrack *ct = (struct nf_conntrack *)(void*) __ct; + struct nf_conntrack *ct; if (net->version != CONNTRACKD_PROTOCOL_VERSION) { STATE_SYNC(error).msg_rcv_malformed++; @@ -74,11 +73,15 @@ do_channel_handler_step(int i, struct nethdr *net, size_t remain) STATE_SYNC(error).msg_rcv_bad_type++; return; } - memset(ct, 0, sizeof(__ct)); + /* TODO: add stats on ENOMEM errors in the future. */ + ct = nfct_new(); + if (ct == NULL) + return; if (parse_payload(ct, net, remain) == -1) { STATE_SYNC(error).msg_rcv_malformed++; STATE_SYNC(error).msg_rcv_bad_payload++; + nfct_destroy(ct); return; } @@ -97,6 +100,7 @@ do_channel_handler_step(int i, struct nethdr *net, size_t remain) STATE_SYNC(error).msg_rcv_bad_type++; break; } + nfct_destroy(ct); } static char __net[65536]; /* XXX: maximum MTU for IPv4 */ |