netdev/wireguard: do not invalidate peer on invalid syntax

We would say "ignoring", but invalidate the peer anyway.
Let's only do that if we modified the peer irreperably.

Also add comments explaining allocation handling.
This commit is contained in:
Zbigniew Jędrzejewski-Szmek 2020-06-22 15:55:04 +02:00
parent de7fef4b6e
commit 44e9342078

View file

@ -573,7 +573,7 @@ int config_parse_wireguard_preshared_key(
void *data,
void *userdata) {
_cleanup_(wireguard_peer_free_or_set_invalidp) WireguardPeer *peer = NULL;
WireguardPeer *peer;
Wireguard *w;
int r;
@ -585,12 +585,7 @@ int config_parse_wireguard_preshared_key(
if (r < 0)
return r;
r = wireguard_decode_key_and_warn(rvalue, peer->preshared_key, unit, filename, line, lvalue);
if (r < 0)
return r;
TAKE_PTR(peer);
return 0;
return wireguard_decode_key_and_warn(rvalue, peer->preshared_key, unit, filename, line, lvalue);
}
int config_parse_wireguard_preshared_key_file(
@ -759,10 +754,6 @@ int config_parse_wireguard_endpoint(
w = WIREGUARD(data);
assert(w);
r = wireguard_peer_new_static(w, filename, section_line, &peer);
if (r < 0)
return r;
if (rvalue[0] == '[') {
begin = &rvalue[1];
end = strchr(rvalue, ']');
@ -794,6 +785,10 @@ int config_parse_wireguard_endpoint(
++end;
}
r = wireguard_peer_new_static(w, filename, section_line, &peer);
if (r < 0)
return r;
r = free_and_strndup(&peer->endpoint_host, begin, len);
if (r < 0)
return log_oom();
@ -805,7 +800,7 @@ int config_parse_wireguard_endpoint(
r = set_ensure_put(&w->peers_with_unresolved_endpoint, NULL, peer);
if (r < 0)
return log_oom();
TAKE_PTR(peer);
TAKE_PTR(peer); /* The peer may already have been in the hash map, that is fine too. */
return 0;
}
@ -822,7 +817,7 @@ int config_parse_wireguard_keepalive(
void *data,
void *userdata) {
_cleanup_(wireguard_peer_free_or_set_invalidp) WireguardPeer *peer = NULL;
WireguardPeer *peer;
uint16_t keepalive = 0;
Wireguard *w;
int r;
@ -843,15 +838,13 @@ int config_parse_wireguard_keepalive(
r = safe_atou16(rvalue, &keepalive);
if (r < 0) {
log_syntax(unit, LOG_ERR, filename, line, r,
"The persistent keepalive interval must be 0-65535. Ignore assignment: %s",
"Failed to parse \"%s\" as keepalive interval (range 065535), ignoring assignment: %m",
rvalue);
return 0;
}
}
peer->persistent_keepalive_interval = keepalive;
TAKE_PTR(peer);
return 0;
}