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

Commit 4870530f authored by Paras Singh Jain's avatar Paras Singh Jain
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 termination.

Change-Id: Ia7d6a3ac5dd1e5f0ce97ee9f6d0c13f16d9dd7f2
Acked-by: default avatarVinisha Varre <vvarre@qti.qualcomm.com>
Signed-off-by: default avatarParas Singh Jain <parassin@codeaurora.org>
parent aa860b5b
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -1989,6 +1989,11 @@ static int sip_help_tcp(struct sk_buff *skb, unsigned int protoff,
	datalen = skb->len - dataoff;
	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;

#ifdef CONFIG_NF_CONNTRACK_SIP_SEGMENTATION
	/* here we save the original datalength and data offset of the skb, this
	 * is needed later to split combined skbs
@@ -2125,6 +2130,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);
}