Re: [NETFILTER 07/32]: Add nf_inet_addr_cmp()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Feb 28 2008 13:00, Patrick McHardy wrote:
>+static inline int nf_inet_addr_cmp(const union nf_inet_addr *a1,
>+				   const union nf_inet_addr *a2)
>+{
>+	return a1->all[0] == a2->all[0] &&
>+	       a1->all[1] == a2->all[1] &&
>+	       a1->all[2] == a2->all[2] &&
>+	       a1->all[3] == a2->all[3];
>+}
>+

Humm... this might raise undefined/unexpected behavior for IPv4 addresses,
for which nf_inet_addr is not properly flattened (zeroed or all-ones,
or whatever static pattern you want to put in all[1],all[2],all[3]),
but the problem already existed before I guess:

> static inline int __nf_ct_tuple_src_equal(const struct nf_conntrack_tuple *t1,
> 					  const struct nf_conntrack_tuple *t2)
> { 
>-	return (t1->src.u3.all[0] == t2->src.u3.all[0] &&
>-		t1->src.u3.all[1] == t2->src.u3.all[1] &&
>-		t1->src.u3.all[2] == t2->src.u3.all[2] &&
>-		t1->src.u3.all[3] == t2->src.u3.all[3] &&
>+	return (nf_inet_addr_cmp(&t1->src.u3, &t2->src.u3) &&
> 		t1->src.u.all == t2->src.u.all &&
> 		t1->src.l3num == t2->src.l3num);
> }
>@@ -174,10 +171,7 @@ static inline int __nf_ct_tuple_src_equal(const struct nf_conntrack_tuple *t1,
> static inline int __nf_ct_tuple_dst_equal(const struct nf_conntrack_tuple *t1,
> 					  const struct nf_conntrack_tuple *t2)
> {
>-	return (t1->dst.u3.all[0] == t2->dst.u3.all[0] &&
>-		t1->dst.u3.all[1] == t2->dst.u3.all[1] &&
>-		t1->dst.u3.all[2] == t2->dst.u3.all[2] &&
>-		t1->dst.u3.all[3] == t2->dst.u3.all[3] &&
>+	return (nf_inet_addr_cmp(&t1->dst.u3, &t2->dst.u3) &&
> 		t1->dst.u.all == t2->dst.u.all &&
> 		t1->dst.protonum == t2->dst.protonum);
> }
>@@ -192,10 +186,7 @@ static inline int nf_ct_tuple_equal(const struct nf_conntrack_tuple *t1,
> static inline int nf_ct_tuple_mask_equal(const struct nf_conntrack_tuple_mask *m1,
> 					 const struct nf_conntrack_tuple_mask *m2)
> {
>-	return (m1->src.u3.all[0] == m2->src.u3.all[0] &&
>-		m1->src.u3.all[1] == m2->src.u3.all[1] &&
>-		m1->src.u3.all[2] == m2->src.u3.all[2] &&
>-		m1->src.u3.all[3] == m2->src.u3.all[3] &&
>+	return (nf_inet_addr_cmp(&m1->src.u3, &m2->src.u3) &&
> 		m1->src.u.all == m2->src.u.all);
> }
-
To unsubscribe from this list: send the line "unsubscribe netfilter-devel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Netfitler Users]     [LARTC]     [Bugtraq]     [Yosemite Forum]

  Powered by Linux