Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fd34d9f7 authored by John Stultz's avatar John Stultz Committed by Amit Pundir
Browse files

xt_qtaguid: Fix panic caused by synack processing

In upstream commit ca6fb065
(tcp: attach SYNACK messages to request sockets instead of
listener)
http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=ca6fb0651883



The building of synack messages was changed, which made it so
the skb->sk points to a casted request_sock. This is problematic,
as there is no sk_socket in a request_sock. So when the qtaguid_mt
function tries to access the sk->sk_socket, it accesses uninitialized
memory.

After looking at how other netfilter implementations handle this,
I realized there was a skb_to_full_sk() helper added, which the
xt_qtaguid code isn't yet using.

This patch adds its use, and resovles panics seen when accessing
uninitialzed memory when processing synack packets.

Reported-by: default avatarYongQin Liu <yongquin.liu@linaro.org>
Signed-off-by: default avatarJohn Stultz <john.stultz@linaro.org>
parent 2e4aa2a5
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -1689,7 +1689,7 @@ static bool qtaguid_mt(const struct sk_buff *skb, struct xt_action_param *par)
	/* default: Fall through and do UID releated work */
	}

	sk = skb->sk;
	sk = skb_to_full_sk(skb);
	/*
	 * When in TCP_TIME_WAIT the sk is not a "struct sock" but
	 * "struct inet_timewait_sock" which is missing fields.