mirror of
https://github.com/systemd/systemd.git
synced 2025-01-26 14:04:03 +03:00
firewall-util: reject NULL source or address with prefixlen 0
Make sure we don't add masquerading rules without a explicitly specified network range we should be masquerading for. The only caller aside from test case is networkd-address.c which never passes a NULL source. As it also passes the network prefix, that should always be > 0 as well. This causes expected test failure: Failed to modify firewall: Invalid argument Failed to modify firewall: Invalid argument Failed to modify firewall: Invalid argument Failed to modify firewall: Protocol not available Failed to modify firewall: Protocol not available Failed to modify firewall: Protocol not available Failed to modify firewall: Protocol not available The failing test cases are amended to expect failure on NULL source or prefix instead of success.
This commit is contained in:
parent
937e305e93
commit
47ed20e1e0
@ -98,6 +98,9 @@ int fw_add_masquerade(
|
||||
if (af != AF_INET)
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
if (!source || source_prefixlen == 0)
|
||||
return -EINVAL;
|
||||
|
||||
h = iptc_init("nat");
|
||||
if (!h)
|
||||
return -errno;
|
||||
|
@ -9,16 +9,30 @@
|
||||
int main(int argc, char *argv[]) {
|
||||
int r;
|
||||
test_setup_logging(LOG_DEBUG);
|
||||
uint8_t prefixlen = 32;
|
||||
|
||||
r = fw_add_masquerade(true, AF_INET, NULL, 0);
|
||||
if (r == 0)
|
||||
log_error("Expected failure: NULL source");
|
||||
|
||||
r = fw_add_masquerade(true, AF_INET, &MAKE_IN_ADDR_UNION(10,1,2,0), 0);
|
||||
if (r == 0)
|
||||
log_error("Expected failure: 0 prefixlen");
|
||||
|
||||
r = fw_add_masquerade(true, AF_INET, &MAKE_IN_ADDR_UNION(10,1,2,3), prefixlen);
|
||||
if (r < 0)
|
||||
log_error_errno(r, "Failed to modify firewall: %m");
|
||||
|
||||
r = fw_add_masquerade(true, AF_INET, NULL, 0);
|
||||
prefixlen = 28;
|
||||
r = fw_add_masquerade(true, AF_INET, &MAKE_IN_ADDR_UNION(10,0,2,0), prefixlen);
|
||||
if (r < 0)
|
||||
log_error_errno(r, "Failed to modify firewall: %m");
|
||||
|
||||
r = fw_add_masquerade(false, AF_INET, NULL, 0);
|
||||
r = fw_add_masquerade(false, AF_INET, &MAKE_IN_ADDR_UNION(10,0,2,0), prefixlen);
|
||||
if (r < 0)
|
||||
log_error_errno(r, "Failed to modify firewall: %m");
|
||||
|
||||
r = fw_add_masquerade(false, AF_INET, &MAKE_IN_ADDR_UNION(10,1,2,3), 32);
|
||||
if (r < 0)
|
||||
log_error_errno(r, "Failed to modify firewall: %m");
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user