From: Yu Watanabe Date: Tue, 16 Mar 2021 15:23:51 +0000 (+0900) Subject: dhcp6: fix wrong length for IA_PD dhcp6 option X-Git-Tag: v248-rc4~9 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=fa92d38428cdac260e72e280bf1d43539f4ea805;p=thirdparty%2Fsystemd.git dhcp6: fix wrong length for IA_PD dhcp6 option Fixes an issue introduced by 73b49d433c2c8e6304c8b82538bd4231d070fce4. When PrefixDelegationHint= is not set, dhcp6_option_append_pd() sets wrong length for IA_PD option, as `r` is `-EINVAL`. Fixes #19021. --- diff --git a/src/libsystemd-network/dhcp6-option.c b/src/libsystemd-network/dhcp6-option.c index 93140160245..91162d636bf 100644 --- a/src/libsystemd-network/dhcp6-option.c +++ b/src/libsystemd-network/dhcp6-option.c @@ -257,9 +257,9 @@ int dhcp6_option_append_pd(uint8_t **buf, size_t *buflen, const DHCP6IA *pd, con len += r; } - if (hint_pd_prefix) { + if (hint_pd_prefix && hint_pd_prefix->iapdprefix.prefixlen > 0) { r = option_append_pd_prefix(buf, buflen, hint_pd_prefix); - if (r < 0 && r != -EINVAL) + if (r < 0) return r; len += r;