From a809d69a409c62cb869aa4908f0e7cdd8c69546a Mon Sep 17 00:00:00 2001 From: Paras Singh Jain Date: Mon, 3 Aug 2015 18:24:34 +0530 Subject: [PATCH] Netfilter: IRC: Copy nickname to proper address Fix to copy nickname to address provided by nickname pointer and avoid overwriting pointer value. Change-Id: I8746d8249e807299ae3bec36f6ed9934d8c1628a Signed-off-by: Paras Singh Jain --- net/netfilter/nf_conntrack_irc.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/net/netfilter/nf_conntrack_irc.c b/net/netfilter/nf_conntrack_irc.c index ec859a23acf3..912e6d1a8f59 100644 --- a/net/netfilter/nf_conntrack_irc.c +++ b/net/netfilter/nf_conntrack_irc.c @@ -150,10 +150,11 @@ static bool mangle_ip(struct nf_conn *ct, *do not mangle the DCC Server IP */ if (temp->server_ip == tuple->dst.u3.ip && - (temp->nickname_len == nick_end - nick_start) && - (memcmp(nick_start, temp->nickname, - temp->nickname_len) == 0)) - return false; + (temp->nickname_len == (nick_end - nick_start))) { + if (memcmp(nick_start, temp->nickname, + temp->nickname_len) == 0) + return false; + } } return true; } @@ -191,7 +192,7 @@ static int handle_nickname(struct nf_conn *ct, kmalloc(i, GFP_ATOMIC); if (temp->nickname) { temp->nickname_len = i; - memcpy(&temp->nickname, + memcpy(temp->nickname, nick_start, temp->nickname_len); } else { list_del(&temp->ptr);