libnm: avoid cloning buffer for nm_connection_get_settings() in nm_keyfile_write()

This commit is contained in:
Thomas Haller 2021-06-14 09:09:07 +02:00
parent 5aef93355f
commit b0f4bb84bf
No known key found for this signature in database
GPG key ID: 29C2366E4DFC5728

View file

@ -4083,10 +4083,9 @@ nm_keyfile_write(NMConnection * connection,
nm_auto_unref_keyfile GKeyFile *keyfile = NULL; nm_auto_unref_keyfile GKeyFile *keyfile = NULL;
GError * local = NULL; GError * local = NULL;
KeyfileWriterInfo info; KeyfileWriterInfo info;
gs_free NMSetting **settings = NULL; NMSetting ** settings;
guint n_settings = 0; int i;
guint i; guint j;
guint j;
g_return_val_if_fail(NM_IS_CONNECTION(connection), NULL); g_return_val_if_fail(NM_IS_CONNECTION(connection), NULL);
g_return_val_if_fail(!error || !*error, NULL); g_return_val_if_fail(!error || !*error, NULL);
@ -4124,13 +4123,16 @@ nm_keyfile_write(NMConnection * connection,
.user_data = user_data, .user_data = user_data,
}; };
settings = nm_connection_get_settings(connection, &n_settings); settings = _nm_connection_get_settings_arr(connection);
for (i = 0; i < n_settings; i++) { for (i = 0; i < (int) _NM_META_SETTING_TYPE_NUM; i++) {
NMSetting * setting = settings[nm_meta_setting_types_by_priority[i]];
const NMSettInfoSetting *sett_info; const NMSettInfoSetting *sett_info;
NMSetting * setting = settings[i];
const char * setting_name; const char * setting_name;
const char * setting_alias; const char * setting_alias;
if (!setting)
continue;
sett_info = _nm_setting_class_get_sett_info(NM_SETTING_GET_CLASS(setting)); sett_info = _nm_setting_class_get_sett_info(NM_SETTING_GET_CLASS(setting));
setting_name = sett_info->setting_class->setting_info->setting_name; setting_name = sett_info->setting_class->setting_info->setting_name;