From a7ef06818673607974f778cdf4cb49ab24ece306 Mon Sep 17 00:00:00 2001 From: Lubomir Rintel Date: Tue, 8 Mar 2022 10:15:52 +0100 Subject: [PATCH] cli: don't ignore errors from setting property aliases Before, we would just ignore the errors when we passed an invalid value to a property alias: $ nmcli c add type ethernet mac Hello Connection 'ethernet-1' (242eec76-7147-411a-a50b-336cf5bc8137) successfully added. $ nmcli c show 242eec76-7147-411a-a50b-336cf5bc8137 |grep 802-3-ethernet.mac-address: 802-3-ethernet.mac-address: -- ...or crash, because the GError would still be around: $ nmcli c add type ethernet mac Hello ethernet.mac-address World (process:734670): GLib-WARNING **: 14:52:51.436: GError set over the top of a previous GError or uninitialized memory. This indicates a bug in someone's code. You must ensure an error is NULL before it's set. The overwriting error message was: Error: failed to modify 802-3-ethernet.mac-address: 'World' is not a valid Ethernet MAC. Error: failed to modify 802-3-ethernet.mac-address: 'Hello' is not a valid Ethernet MAC. Now we catch it early enough: $ nmcli c add type ethernet mac Hello Error: failed to modify 802-3-ethernet.mac-address: 'Hello' is not a valid Ethernet MAC. Fixes: 40032f461415 ('cli: fix resetting values via property alias') https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/1134 --- src/nmcli/connections.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/nmcli/connections.c b/src/nmcli/connections.c index 559dc7dbc0..025f96a179 100644 --- a/src/nmcli/connections.c +++ b/src/nmcli/connections.c @@ -4211,16 +4211,16 @@ set_option(NmCli *nmc, if (option && option->check_and_set) { return option->check_and_set(nmc, connection, option, value, error); } else if (value || allow_reset) { - set_property(nmc->client, - connection, - setting_name, - property_name, - value, - !value ? NM_META_ACCESSOR_MODIFIER_DEL - : (inf_flags & NM_META_PROPERTY_INF_FLAG_MULTI - ? NM_META_ACCESSOR_MODIFIER_ADD - : NM_META_ACCESSOR_MODIFIER_SET), - error); + return set_property(nmc->client, + connection, + setting_name, + property_name, + value, + !value ? NM_META_ACCESSOR_MODIFIER_DEL + : (inf_flags & NM_META_PROPERTY_INF_FLAG_MULTI + ? NM_META_ACCESSOR_MODIFIER_ADD + : NM_META_ACCESSOR_MODIFIER_SET), + error); } return TRUE;