Commit 88edf103 authored by Lionel Gauthier's avatar Lionel Gauthier Committed by David S. Miller

gtp: gtp_check_src_ms_ipv4() always return success

gtp_check_src_ms_ipv4() did not find the PDP context matching with the
UE IP address because the memory location is not right, but the result
is inverted by the Boolean "not" operator.  So whatever is the PDP
context, any call to this function is successful.
Signed-off-by: default avatarLionel Gauthier <Lionel.Gauthier@eurecom.fr>
Signed-off-by: default avatarPablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent e999cb43
...@@ -158,9 +158,9 @@ static bool gtp_check_src_ms_ipv4(struct sk_buff *skb, struct pdp_ctx *pctx, ...@@ -158,9 +158,9 @@ static bool gtp_check_src_ms_ipv4(struct sk_buff *skb, struct pdp_ctx *pctx,
if (!pskb_may_pull(skb, hdrlen + sizeof(struct iphdr))) if (!pskb_may_pull(skb, hdrlen + sizeof(struct iphdr)))
return false; return false;
iph = (struct iphdr *)(skb->data + hdrlen + sizeof(struct iphdr)); iph = (struct iphdr *)(skb->data + hdrlen);
return iph->saddr != pctx->ms_addr_ip4.s_addr; return iph->saddr == pctx->ms_addr_ip4.s_addr;
} }
/* Check if the inner IP source address in this packet is assigned to any /* Check if the inner IP source address in this packet is assigned to any
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment