diff options
author | Lubomir Rintel <lkundrak@v3.sk> | 2022-03-08 10:15:52 +0100 |
---|---|---|
committer | Lubomir Rintel <lkundrak@v3.sk> | 2022-03-08 10:15:52 +0100 |
commit | a7ef06818673607974f778cdf4cb49ab24ece306 (patch) | |
tree | 89eb1e9ff3df6a9ea6dd4349e5d1d20f76f2f855 | |
parent | 6430a7d70c22e584d020810b7da27778ab0c9892 (diff) |
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
-rw-r--r-- | src/nmcli/connections.c | 20 |
1 files 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; |