generic: ar8216: rename chip field of struct ar8216
[openwrt.git] / target / linux / generic / patches-2.6.39 / 610-netfilter_match_bypass_default_checks.patch
index ac0fd15..c834bee 100644 (file)
@@ -20,7 +20,7 @@
        if (FWINV((ip->saddr&ipinfo->smsk.s_addr) != ipinfo->src.s_addr,
                  IPT_INV_SRCIP) ||
            FWINV((ip->daddr&ipinfo->dmsk.s_addr) != ipinfo->dst.s_addr,
-@@ -143,6 +146,26 @@ ip_packet_match(const struct iphdr *ip,
+@@ -143,6 +146,29 @@ ip_packet_match(const struct iphdr *ip,
        return true;
  }
  
@@ -38,6 +38,9 @@
 +      if (memcmp(ip->outiface_mask, iface_mask, IFNAMSIZ) != 0)
 +              return;
 +
++      if (ip->smsk.s_addr || ip->dmsk.s_addr)
++              return;
++
 +      if (ip->proto)
 +              return;
 +
@@ -47,7 +50,7 @@
  static bool
  ip_checkentry(const struct ipt_ip *ip)
  {
-@@ -566,7 +589,7 @@ static void cleanup_match(struct xt_entr
+@@ -566,7 +592,7 @@ static void cleanup_match(struct xt_entr
  }
  
  static int
@@ -56,7 +59,7 @@
  {
        const struct xt_entry_target *t;
  
-@@ -575,6 +598,8 @@ check_entry(const struct ipt_entry *e, c
+@@ -575,6 +601,8 @@ check_entry(const struct ipt_entry *e, c
                return -EINVAL;
        }
  
@@ -65,7 +68,7 @@
        if (e->target_offset + sizeof(struct xt_entry_target) >
            e->next_offset)
                return -EINVAL;
-@@ -936,6 +961,7 @@ copy_entries_to_user(unsigned int total_
+@@ -936,6 +964,7 @@ copy_entries_to_user(unsigned int total_
        const struct xt_table_info *private = table->private;
        int ret = 0;
        const void *loc_cpu_entry;
  
        counters = alloc_counters(table);
        if (IS_ERR(counters))
-@@ -967,6 +993,14 @@ copy_entries_to_user(unsigned int total_
+@@ -966,6 +995,14 @@ copy_entries_to_user(unsigned int total_
+                       ret = -EFAULT;
                        goto free_counters;
                }
++
 +              flags = e->ip.flags & IPT_F_MASK;
 +              if (copy_to_user(userptr + off
 +                               + offsetof(struct ipt_entry, ip.flags),
@@ -84,7 +88,6 @@
 +                      ret = -EFAULT;
 +                      goto free_counters;
 +              }
-+
                for (i = sizeof(struct ipt_entry);
                     i < e->target_offset;
-                    i += m->u.match_size) {
This page took 0.023511 seconds and 4 git commands to generate.