Do not ignore invalid values for dns, addresses and routes received via DBus, and return an error instead.
Invalid values for these properties received via DBUS were just ignored and filtered out,
only emitting a warning to the logs. If there were still some valid
values, those were configured and the client was unaware of the
errors. Only if there was not any valid value at all, an error was returned
in some cases from
verify, but not reflecting the real cause. Example:
ipv4.addresses: this property cannot be empty for 'method=manual'
Check for invalid value errors in the
_from_dbus functions and
propagate them if there are any. The valid value are added even if
there is an error, and the caller will be responsible of handling
the error, making it fatal for NM_SETTING_PARSE_FLAGS_STRICT, or
non-fatal for NM_SETTING_PARSE_FLAGS_BEST_EFFORT.
Actually, the invalid values were dropped in some helper functions that converts from GVariant to the proper C type. We cannot change these functions signature or behaviour because they were public API, so create new ones that accept a GError argument and set it in case of any error.
Additionally, the property
address-labels could be incorrectly assigned
if any address from
addresses was dropped. Fix that too.
Added NMCI tests: