From e5f1b999eb51681e895ad77281a6862478641845 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Wed, 9 Sep 2020 23:06:40 +0200 Subject: [PATCH] network: don't fail on various config parse errors We typically don't fail on config parse errors (to maximize compat), let's not do this in these cases either. --- src/network/netdev/macsec.c | 10 ++++++---- src/network/netdev/wireguard.c | 12 ++++++++---- src/network/networkd-fdb.c | 10 ++++++---- 3 files changed, 20 insertions(+), 12 deletions(-) diff --git a/src/network/netdev/macsec.c b/src/network/netdev/macsec.c index 6fc316b3a0..2776605b1c 100644 --- a/src/network/netdev/macsec.c +++ b/src/network/netdev/macsec.c @@ -851,10 +851,12 @@ int config_parse_macsec_key_id( log_syntax(unit, LOG_WARNING, filename, line, r, "Failed to parse KeyId \"%s\": %m", rvalue); return 0; } - if (l > MACSEC_KEYID_LEN) - return log_syntax(unit, LOG_WARNING, filename, line, 0, - "Specified KeyId is larger then the allowed maximum (%zu > %u), ignoring: %s", - l, MACSEC_KEYID_LEN, rvalue); + if (l > MACSEC_KEYID_LEN) { + log_syntax(unit, LOG_WARNING, filename, line, 0, + "Specified KeyId is larger then the allowed maximum (%zu > %u), ignoring: %s", + l, MACSEC_KEYID_LEN, rvalue); + return 0; + } dest = a ? a->sa.key_id : b->sa.key_id; memcpy_safe(dest, p, l); diff --git a/src/network/netdev/wireguard.c b/src/network/netdev/wireguard.c index d15ab845ff..f833cfb61a 100644 --- a/src/network/netdev/wireguard.c +++ b/src/network/netdev/wireguard.c @@ -492,13 +492,17 @@ static int wireguard_decode_key_and_warn( (void) warn_file_is_world_accessible(filename, NULL, unit, line); r = unbase64mem_full(rvalue, strlen(rvalue), true, &key, &len); - if (r < 0) - return log_syntax(unit, LOG_WARNING, filename, line, r, + if (r < 0) { + log_syntax(unit, LOG_WARNING, filename, line, r, "Failed to decode wireguard key provided by %s=, ignoring assignment: %m", lvalue); - if (len != WG_KEY_LEN) - return log_syntax(unit, LOG_WARNING, filename, line, SYNTHETIC_ERRNO(EINVAL), + return 0; + } + if (len != WG_KEY_LEN) { + log_syntax(unit, LOG_WARNING, filename, line, 0, "Wireguard key provided by %s= has invalid length (%zu bytes), ignoring assignment.", lvalue, len); + return 0; + } memcpy(ret, key, WG_KEY_LEN); return 0; diff --git a/src/network/networkd-fdb.c b/src/network/networkd-fdb.c index 4fb0f632df..628c3988ac 100644 --- a/src/network/networkd-fdb.c +++ b/src/network/networkd-fdb.c @@ -292,10 +292,12 @@ int config_parse_fdb_destination( return log_oom(); r = in_addr_from_string_auto(rvalue, &fdb_entry->family, &fdb_entry->destination_addr); - if (r < 0) - return log_syntax(unit, LOG_WARNING, filename, line, r, - "FDB destination IP address is invalid, ignoring assignment: %s", - rvalue); + if (r < 0) { + log_syntax(unit, LOG_WARNING, filename, line, r, + "FDB destination IP address is invalid, ignoring assignment: %s", + rvalue); + return 0; + } fdb_entry = NULL; -- 2.25.1