Jan Engelhardt wrote: > The mask created for the -D rulespec is simply too small. > xtables_targets points to whatever target has last been loaded, so > xtables_targets->size is quite almost wrong, as we need to use the > size of the target for the specific rule that is about to be deleted. > > This bug existed ever since iptables history is tracked, and requires > certain circumstances to be visible, where the deletion operation is > one. Furthermore, multiple userspace target extensions must have been > loaded, and a target B whose .size is smaller than the target A of > the rule we are about to delete must have been loaded more recently > than target A. The minimal testcase is (rule 60007 gets wrongly > removed) > > *nat > -F > -X > -A POSTROUTING -p udp -j SNAT --to 192.168.1.1:60007 > -A POSTROUTING -p udp -j SNAT --to 192.168.1.1:60008 > -A POSTROUTING -p udp -j CONNMARK --set-mark 0 > -D POSTROUTING -p udp -j SNAT --to 192.168.1.1:60008 > COMMIT > > References: http://bugzilla.netfilter.org/show_bug.cgi?id=606 Very nice catch, thanks Jan. -- 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