Skip to content

Commit e5e693a

Browse files
gfreewindummakynes
authored andcommitted
netfilter: conntrack: Only need first 4 bytes to get l4proto ports
We only need first 4 bytes instead of 8 bytes to get the ports of tcp/udp/dccp/sctp/udplite in their pkt_to_tuple function. Signed-off-by: Gao Feng <[email protected]> Signed-off-by: Pablo Neira Ayuso <[email protected]>
1 parent f08aff4 commit e5e693a

File tree

5 files changed

+10
-8
lines changed

5 files changed

+10
-8
lines changed

net/netfilter/nf_conntrack_proto_dccp.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -402,7 +402,8 @@ static bool dccp_pkt_to_tuple(const struct sk_buff *skb, unsigned int dataoff,
402402
{
403403
struct dccp_hdr _hdr, *dh;
404404

405-
dh = skb_header_pointer(skb, dataoff, sizeof(_hdr), &_hdr);
405+
/* Actually only need first 4 bytes to get ports. */
406+
dh = skb_header_pointer(skb, dataoff, 4, &_hdr);
406407
if (dh == NULL)
407408
return false;
408409

net/netfilter/nf_conntrack_proto_sctp.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -161,8 +161,8 @@ static bool sctp_pkt_to_tuple(const struct sk_buff *skb, unsigned int dataoff,
161161
const struct sctphdr *hp;
162162
struct sctphdr _hdr;
163163

164-
/* Actually only need first 8 bytes. */
165-
hp = skb_header_pointer(skb, dataoff, 8, &_hdr);
164+
/* Actually only need first 4 bytes to get ports. */
165+
hp = skb_header_pointer(skb, dataoff, 4, &_hdr);
166166
if (hp == NULL)
167167
return false;
168168

net/netfilter/nf_conntrack_proto_tcp.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -282,8 +282,8 @@ static bool tcp_pkt_to_tuple(const struct sk_buff *skb, unsigned int dataoff,
282282
const struct tcphdr *hp;
283283
struct tcphdr _hdr;
284284

285-
/* Actually only need first 8 bytes. */
286-
hp = skb_header_pointer(skb, dataoff, 8, &_hdr);
285+
/* Actually only need first 4 bytes to get ports. */
286+
hp = skb_header_pointer(skb, dataoff, 4, &_hdr);
287287
if (hp == NULL)
288288
return false;
289289

net/netfilter/nf_conntrack_proto_udp.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,8 @@ static bool udp_pkt_to_tuple(const struct sk_buff *skb,
4444
const struct udphdr *hp;
4545
struct udphdr _hdr;
4646

47-
/* Actually only need first 8 bytes. */
48-
hp = skb_header_pointer(skb, dataoff, sizeof(_hdr), &_hdr);
47+
/* Actually only need first 4 bytes to get ports. */
48+
hp = skb_header_pointer(skb, dataoff, 4, &_hdr);
4949
if (hp == NULL)
5050
return false;
5151

net/netfilter/nf_conntrack_proto_udplite.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,8 @@ static bool udplite_pkt_to_tuple(const struct sk_buff *skb,
5454
const struct udphdr *hp;
5555
struct udphdr _hdr;
5656

57-
hp = skb_header_pointer(skb, dataoff, sizeof(_hdr), &_hdr);
57+
/* Actually only need first 4 bytes to get ports. */
58+
hp = skb_header_pointer(skb, dataoff, 4, &_hdr);
5859
if (hp == NULL)
5960
return false;
6061

0 commit comments

Comments
 (0)