From 4a9c32063f46372704bba098089db0d678db2cc7 Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Wed, 25 Oct 2023 16:10:06 +0200 Subject: [PATCH] libnm: reserve size for properties_override array For settings with many properties, pre-allocate a larger buffer via _nm_sett_info_property_override_create_array_sized(). The buffer is larger than needed, so when we add more properties it still works. In any case, GArray will grow automatically, so getting this wrong is not fatal (just suboptimal). --- src/libnm-core-impl/nm-setting-8021x.c | 2 +- src/libnm-core-impl/nm-setting-bridge.c | 2 +- src/libnm-core-impl/nm-setting-connection.c | 2 +- src/libnm-core-impl/nm-setting-ip-config.c | 2 +- src/libnm-core-impl/nm-setting-wireless-security.c | 2 +- src/libnm-core-impl/nm-setting-wireless.c | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/libnm-core-impl/nm-setting-8021x.c b/src/libnm-core-impl/nm-setting-8021x.c index cf12b6f53b..92241db3c1 100644 --- a/src/libnm-core-impl/nm-setting-8021x.c +++ b/src/libnm-core-impl/nm-setting-8021x.c @@ -3197,7 +3197,7 @@ nm_setting_802_1x_class_init(NMSetting8021xClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS(klass); NMSettingClass *setting_class = NM_SETTING_CLASS(klass); - GArray *properties_override = _nm_sett_info_property_override_create_array(); + GArray *properties_override = _nm_sett_info_property_override_create_array_sized(55); object_class->get_property = get_property; object_class->set_property = set_property; diff --git a/src/libnm-core-impl/nm-setting-bridge.c b/src/libnm-core-impl/nm-setting-bridge.c index c1a2621db1..253214b590 100644 --- a/src/libnm-core-impl/nm-setting-bridge.c +++ b/src/libnm-core-impl/nm-setting-bridge.c @@ -1416,7 +1416,7 @@ nm_setting_bridge_class_init(NMSettingBridgeClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS(klass); NMSettingClass *setting_class = NM_SETTING_CLASS(klass); - GArray *properties_override = _nm_sett_info_property_override_create_array(); + GArray *properties_override = _nm_sett_info_property_override_create_array_sized(35); object_class->get_property = get_property; object_class->set_property = set_property; diff --git a/src/libnm-core-impl/nm-setting-connection.c b/src/libnm-core-impl/nm-setting-connection.c index bcd29ce5ee..20ccd1216e 100644 --- a/src/libnm-core-impl/nm-setting-connection.c +++ b/src/libnm-core-impl/nm-setting-connection.c @@ -1806,7 +1806,7 @@ nm_setting_connection_class_init(NMSettingConnectionClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS(klass); NMSettingClass *setting_class = NM_SETTING_CLASS(klass); - GArray *properties_override = _nm_sett_info_property_override_create_array(); + GArray *properties_override = _nm_sett_info_property_override_create_array_sized(35); object_class->get_property = get_property; object_class->set_property = set_property; diff --git a/src/libnm-core-impl/nm-setting-ip-config.c b/src/libnm-core-impl/nm-setting-ip-config.c index 3184c2747a..1105d3d9ed 100644 --- a/src/libnm-core-impl/nm-setting-ip-config.c +++ b/src/libnm-core-impl/nm-setting-ip-config.c @@ -5963,7 +5963,7 @@ dns_data_from_dbus(_NM_SETT_INFO_PROP_FROM_DBUS_FCN_ARGS _nm_nil) GArray * _nm_sett_info_property_override_create_array_ip_config(int addr_family) { - GArray *properties_override = _nm_sett_info_property_override_create_array(); + GArray *properties_override = _nm_sett_info_property_override_create_array_sized(45); nm_assert_addr_family(addr_family); diff --git a/src/libnm-core-impl/nm-setting-wireless-security.c b/src/libnm-core-impl/nm-setting-wireless-security.c index cc9e4d4ef0..cd5e1bc316 100644 --- a/src/libnm-core-impl/nm-setting-wireless-security.c +++ b/src/libnm-core-impl/nm-setting-wireless-security.c @@ -1383,7 +1383,7 @@ nm_setting_wireless_security_class_init(NMSettingWirelessSecurityClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS(klass); NMSettingClass *setting_class = NM_SETTING_CLASS(klass); - GArray *properties_override = _nm_sett_info_property_override_create_array(); + GArray *properties_override = _nm_sett_info_property_override_create_array_sized(25); object_class->get_property = get_property; object_class->set_property = set_property; diff --git a/src/libnm-core-impl/nm-setting-wireless.c b/src/libnm-core-impl/nm-setting-wireless.c index 5effe8a747..92140ea64d 100644 --- a/src/libnm-core-impl/nm-setting-wireless.c +++ b/src/libnm-core-impl/nm-setting-wireless.c @@ -1312,7 +1312,7 @@ nm_setting_wireless_class_init(NMSettingWirelessClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS(klass); NMSettingClass *setting_class = NM_SETTING_CLASS(klass); - GArray *properties_override = _nm_sett_info_property_override_create_array(); + GArray *properties_override = _nm_sett_info_property_override_create_array_sized(25); object_class->set_property = set_property; object_class->get_property = get_property;