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

Commit 3cfcd57f authored by Mohammed Javid's avatar Mohammed Javid Committed by Mohammed
Browse files

netfilter: contrack: Adding check for SIP/2.0



Packets arriving at SIP port will now be checked for SIP/2.0 before
getting tagged as SIP packet. Added helper functions strnstr and strnstrn
for checking substring in a string in case of non null trmination.

Change-Id: Ia7d6a3ac5dd1e5f0ce97ee9f6d0c13f16d9dd7f2
Acked-by: default avatarSneha <smaganah@qti.qualcomm.com>
Signed-off-by: default avatarMohammed Javid <mjavid@codeaurora.org>
parent 55000b57
Loading
Loading
Loading
Loading
+9 −1
Original line number Diff line number Diff line
/* SIP extension for IP connection tracking.
 *
 * Copyright (c) 2015,2017, The Linux Foundation. All rights reserved.
 * Copyright (c) 2015,2017-2018, The Linux Foundation. All rights reserved.
 * (C) 2005 by Christian Hentschel <chentschel@arnet.com.ar>
 * based on RR's ip_conntrack_ftp.c and other modules.
 * (C) 2007 United Security Providers
@@ -1880,6 +1880,10 @@ static int sip_help_tcp(struct sk_buff *skb, unsigned int protoff,
	if (datalen < strlen("SIP/2.0 200"))
		return NF_ACCEPT;

	/* Check if the header contains SIP version */
	if (!strnstr(dptr, "SIP/2.0", datalen))
		return NF_ACCEPT;

	/* here we save the original datalength and data offset of the skb, this
	 * is needed later to split combined skbs
	 */
@@ -2051,6 +2055,10 @@ static int sip_help_udp(struct sk_buff *skb, unsigned int protoff,
	if (datalen < strlen("SIP/2.0 200"))
		return NF_ACCEPT;

	/* Check if the header contains SIP version */
	if (!strnstr(dptr, "SIP/2.0", datalen))
		return NF_ACCEPT;

	return process_sip_msg(skb, ct, protoff, dataoff, &dptr, &datalen);
}