ifcfg-rh: use cleanup attribute for error handling in reader
Drop some uses of "goto error". Instead, have the memory owned by an auto variable and automatically release it via the cleanup attribute.
This commit is contained in:
@@ -653,9 +653,10 @@ read_one_ip4_route (shvarFile *ifcfg,
|
||||
static gboolean
|
||||
read_route_file_legacy (const char *filename, NMSettingIPConfig *s_ip4, GError **error)
|
||||
{
|
||||
char *contents = NULL;
|
||||
gs_free char *contents = NULL;
|
||||
gs_strfreev char **lines = NULL;
|
||||
gsize len = 0;
|
||||
char **lines = NULL, **iter;
|
||||
char **iter;
|
||||
GRegex *regex_to1, *regex_to2, *regex_via, *regex_metric;
|
||||
GMatchInfo *match_info;
|
||||
int prefix_int;
|
||||
@@ -675,8 +676,8 @@ read_route_file_legacy (const char *filename, NMSettingIPConfig *s_ip4, GError *
|
||||
g_return_val_if_fail (!error || !*error, FALSE);
|
||||
|
||||
/* Read the route file */
|
||||
if (!g_file_get_contents (filename, &contents, &len, NULL) || !len) {
|
||||
g_free (contents);
|
||||
if ( !g_file_get_contents (filename, &contents, &len, NULL)
|
||||
|| !len) {
|
||||
return TRUE; /* missing/empty = success */
|
||||
}
|
||||
|
||||
@@ -787,8 +788,6 @@ read_route_file_legacy (const char *filename, NMSettingIPConfig *s_ip4, GError *
|
||||
success = TRUE;
|
||||
|
||||
error:
|
||||
g_free (contents);
|
||||
g_strfreev (lines);
|
||||
g_regex_unref (regex_to1);
|
||||
g_regex_unref (regex_to2);
|
||||
g_regex_unref (regex_via);
|
||||
@@ -3384,23 +3383,22 @@ make_leap_setting (shvarFile *ifcfg,
|
||||
const char *file,
|
||||
GError **error)
|
||||
{
|
||||
NMSettingWirelessSecurity *wsec;
|
||||
gs_unref_object NMSettingWirelessSecurity *wsec = NULL;
|
||||
shvarFile *keys_ifcfg;
|
||||
char *value;
|
||||
gs_free char *value = NULL;
|
||||
NMSettingSecretFlags flags;
|
||||
|
||||
wsec = NM_SETTING_WIRELESS_SECURITY (nm_setting_wireless_security_new ());
|
||||
|
||||
value = svGetValueStr_cp (ifcfg, "KEY_MGMT");
|
||||
if (!value || strcmp (value, "IEEE8021X"))
|
||||
goto error; /* Not LEAP */
|
||||
return NULL;
|
||||
nm_clear_g_free (&value);
|
||||
|
||||
g_free (value);
|
||||
value = svGetValueStr_cp (ifcfg, "SECURITYMODE");
|
||||
if (!value || strcasecmp (value, "leap"))
|
||||
goto error; /* Not LEAP */
|
||||
|
||||
g_free (value);
|
||||
return NULL; /* Not LEAP */
|
||||
nm_clear_g_free (&value);
|
||||
|
||||
flags = read_secret_flags (ifcfg, "IEEE_8021X_PASSWORD_FLAGS");
|
||||
g_object_set (wsec, NM_SETTING_WIRELESS_SECURITY_LEAP_PASSWORD_FLAGS, flags, NULL);
|
||||
@@ -3418,30 +3416,24 @@ make_leap_setting (shvarFile *ifcfg,
|
||||
}
|
||||
if (value && strlen (value))
|
||||
g_object_set (wsec, NM_SETTING_WIRELESS_SECURITY_LEAP_PASSWORD, value, NULL);
|
||||
g_free (value);
|
||||
nm_clear_g_free (&value);
|
||||
}
|
||||
|
||||
value = svGetValueStr_cp (ifcfg, "IEEE_8021X_IDENTITY");
|
||||
if (!value) {
|
||||
g_set_error (error, NM_SETTINGS_ERROR, NM_SETTINGS_ERROR_INVALID_CONNECTION,
|
||||
"Missing LEAP identity");
|
||||
goto error;
|
||||
return NULL;
|
||||
}
|
||||
g_object_set (wsec, NM_SETTING_WIRELESS_SECURITY_LEAP_USERNAME, value, NULL);
|
||||
g_free (value);
|
||||
nm_clear_g_free (&value);
|
||||
|
||||
g_object_set (wsec,
|
||||
NM_SETTING_WIRELESS_SECURITY_KEY_MGMT, "ieee8021x",
|
||||
NM_SETTING_WIRELESS_SECURITY_AUTH_ALG, "leap",
|
||||
NULL);
|
||||
|
||||
return (NMSetting *) wsec;
|
||||
|
||||
error:
|
||||
g_free (value);
|
||||
if (wsec)
|
||||
g_object_unref (wsec);
|
||||
return NULL;
|
||||
return (NMSetting *) g_steal_pointer (&wsec);
|
||||
}
|
||||
|
||||
static NMSetting *
|
||||
@@ -4007,8 +3999,8 @@ make_wired_setting (shvarFile *ifcfg,
|
||||
NMSetting8021x **s_8021x,
|
||||
GError **error)
|
||||
{
|
||||
NMSettingWired *s_wired;
|
||||
char *value = NULL;
|
||||
gs_unref_object NMSettingWired *s_wired = NULL;
|
||||
gs_free char *value = NULL;
|
||||
char *nettype;
|
||||
|
||||
s_wired = NM_SETTING_WIRED (nm_setting_wired_new ());
|
||||
@@ -4022,14 +4014,14 @@ make_wired_setting (shvarFile *ifcfg,
|
||||
g_object_set (s_wired, NM_SETTING_WIRED_MTU, (guint) mtu, NULL);
|
||||
else
|
||||
PARSE_WARNING ("invalid MTU '%s'", value);
|
||||
g_free (value);
|
||||
nm_clear_g_free (&value);
|
||||
}
|
||||
|
||||
value = svGetValueStr_cp (ifcfg, "HWADDR");
|
||||
if (value) {
|
||||
value = g_strstrip (value);
|
||||
g_object_set (s_wired, NM_SETTING_WIRED_MAC_ADDRESS, value, NULL);
|
||||
g_free (value);
|
||||
nm_clear_g_free (&value);
|
||||
}
|
||||
|
||||
value = svGetValueStr_cp (ifcfg, "SUBCHANNELS");
|
||||
@@ -4060,19 +4052,19 @@ make_wired_setting (shvarFile *ifcfg,
|
||||
g_object_set (s_wired, NM_SETTING_WIRED_S390_SUBCHANNELS, chans, NULL);
|
||||
g_strfreev (chans);
|
||||
}
|
||||
g_free (value);
|
||||
nm_clear_g_free (&value);
|
||||
}
|
||||
|
||||
value = svGetValueStr_cp (ifcfg, "PORTNAME");
|
||||
if (value) {
|
||||
nm_setting_wired_add_s390_option (s_wired, "portname", value);
|
||||
g_free (value);
|
||||
nm_clear_g_free (&value);
|
||||
}
|
||||
|
||||
value = svGetValueStr_cp (ifcfg, "CTCPROT");
|
||||
if (value) {
|
||||
nm_setting_wired_add_s390_option (s_wired, "ctcprot", value);
|
||||
g_free (value);
|
||||
nm_clear_g_free (&value);
|
||||
}
|
||||
|
||||
nettype = svGetValueStr_cp (ifcfg, "NETTYPE");
|
||||
@@ -4102,28 +4094,28 @@ make_wired_setting (shvarFile *ifcfg,
|
||||
iter++;
|
||||
}
|
||||
g_strfreev (options);
|
||||
g_free (value);
|
||||
nm_clear_g_free (&value);
|
||||
}
|
||||
|
||||
value = svGetValueStr_cp (ifcfg, "MACADDR");
|
||||
if (value) {
|
||||
value = g_strstrip (value);
|
||||
g_object_set (s_wired, NM_SETTING_WIRED_CLONED_MAC_ADDRESS, value, NULL);
|
||||
g_free (value);
|
||||
}
|
||||
g_object_set (s_wired,
|
||||
NM_SETTING_WIRED_CLONED_MAC_ADDRESS,
|
||||
svGetValueStr (ifcfg, "MACADDR", &value),
|
||||
NULL);
|
||||
nm_clear_g_free (&value);
|
||||
|
||||
value = svGetValueStr_cp (ifcfg, "GENERATE_MAC_ADDRESS_MASK");
|
||||
g_object_set (s_wired, NM_SETTING_WIRED_GENERATE_MAC_ADDRESS_MASK, value, NULL);
|
||||
g_free (value);
|
||||
g_object_set (s_wired,
|
||||
NM_SETTING_WIRED_GENERATE_MAC_ADDRESS_MASK,
|
||||
svGetValueStr (ifcfg, "GENERATE_MAC_ADDRESS_MASK", &value),
|
||||
NULL);
|
||||
nm_clear_g_free (&value);
|
||||
|
||||
value = svGetValueStr_cp (ifcfg, "HWADDR_BLACKLIST");
|
||||
if (value) {
|
||||
char **strv;
|
||||
gs_strfreev char **strv = NULL;
|
||||
|
||||
strv = transform_hwaddr_blacklist (value);
|
||||
g_object_set (s_wired, NM_SETTING_WIRED_MAC_ADDRESS_BLACKLIST, strv, NULL);
|
||||
g_strfreev (strv);
|
||||
g_free (value);
|
||||
nm_clear_g_free (&value);
|
||||
}
|
||||
|
||||
value = svGetValueStr_cp (ifcfg, "KEY_MGMT");
|
||||
@@ -4131,25 +4123,20 @@ make_wired_setting (shvarFile *ifcfg,
|
||||
if (!strcmp (value, "IEEE8021X")) {
|
||||
*s_8021x = fill_8021x (ifcfg, file, value, FALSE, error);
|
||||
if (!*s_8021x)
|
||||
goto error;
|
||||
return NULL;
|
||||
} else {
|
||||
g_set_error (error, NM_SETTINGS_ERROR, NM_SETTINGS_ERROR_INVALID_CONNECTION,
|
||||
"Unknown wired KEY_MGMT type '%s'", value);
|
||||
goto error;
|
||||
return NULL;
|
||||
}
|
||||
g_free (value);
|
||||
nm_clear_g_free (&value);
|
||||
}
|
||||
|
||||
parse_ethtool_options (ifcfg, s_wired,
|
||||
svGetValue (ifcfg, "ETHTOOL_OPTS", &value));
|
||||
g_free (value);
|
||||
nm_clear_g_free (&value);
|
||||
|
||||
return (NMSetting *) s_wired;
|
||||
|
||||
error:
|
||||
g_free (value);
|
||||
g_object_unref (s_wired);
|
||||
return NULL;
|
||||
return (NMSetting *) g_steal_pointer (&s_wired);
|
||||
}
|
||||
|
||||
static NMConnection *
|
||||
|
Reference in New Issue
Block a user