mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-02-04 15:20:28 +01:00
libnm: check options in NMSettingEthtool.verify() in defined order
Iterating the hash gives the entries in undefined order. That means, when validation would fail for more than one option, then the error message arbitrarily points out one or the other. Instead, process the entries in a defined order.
This commit is contained in:
parent
280600f0be
commit
16c8555b24
1 changed files with 10 additions and 9 deletions
|
|
@ -198,6 +198,8 @@ nm_setting_ethtool_clear_features (NMSettingEthtool *setting)
|
|||
nm_ethtool_optname_is_feature);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
guint
|
||||
nm_setting_ethtool_init_features (NMSettingEthtool *setting,
|
||||
NMTernary *requested /* indexed by NMEthtoolID - _NM_ETHTOOL_ID_FEATURE_FIRST */)
|
||||
|
|
@ -277,17 +279,16 @@ nm_setting_ethtool_get_optnames (NMSettingEthtool *setting,
|
|||
static gboolean
|
||||
verify (NMSetting *setting, NMConnection *connection, GError **error)
|
||||
{
|
||||
GHashTable *hash;
|
||||
GHashTableIter iter;
|
||||
const char *optname;
|
||||
GVariant *variant;
|
||||
const char *const*optnames;
|
||||
GVariant *const*variants;
|
||||
guint len;
|
||||
guint i;
|
||||
|
||||
hash = _nm_setting_option_hash (setting, FALSE);
|
||||
if (!hash)
|
||||
return TRUE;
|
||||
len = _nm_setting_option_get_all (setting, &optnames, &variants);
|
||||
|
||||
g_hash_table_iter_init (&iter, hash);
|
||||
while (g_hash_table_iter_next (&iter, (gpointer *) &optname, (gpointer *) &variant)) {
|
||||
for (i = 0; i < len; i++) {
|
||||
const char *optname = optnames[i];
|
||||
GVariant *variant = variants[i];
|
||||
const GVariantType *variant_type;
|
||||
NMEthtoolID ethtool_id;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue