]> git.ipfire.org Git - thirdparty/iptables.git/commit
libxtables: xtoptions: Fix for non-CIDR-compatible hostmasks
authorPhil Sutter <phil@nwl.cc>
Tue, 28 Nov 2023 19:21:49 +0000 (20:21 +0100)
committerPhil Sutter <phil@nwl.cc>
Wed, 29 Nov 2023 01:33:06 +0000 (02:33 +0100)
commit41139aee5e53304182a25f1e573f034b313f7232
treef102fe9cb362e3a6ba3c9a5adf48af3e8cc2b5a7
parent584569727dc0fc52f401db628059807030138a99
libxtables: xtoptions: Fix for non-CIDR-compatible hostmasks

In order to parse the mask, xtopt_parse_hostmask() calls
xtopt_parse_plenmask() thereby limiting netmask support to prefix
lengths (alternatively specified in IP address notation).

In order to lift this impractical restriction, make
xtopt_parse_plenmask() aware of the fact that xtopt_parse_plen() may
fall back to xtopt_parse_mask() which correctly initializes val.hmask
itself and indicates non-CIDR-compatible masks by setting val.hlen to
-1.

So in order to support these odd masks, it is sufficient for
xtopt_parse_plenmask() to skip its mask building from val.hlen value and
take whatever val.hmask contains.

Fixes: 66266abd17adc ("libxtables: XTTYPE_HOSTMASK support")
Signed-off-by: Phil Sutter <phil@nwl.cc>
libxtables/xtoptions.c