From 3e70fb20d4aabcdc3d874ae32f31a17eb5c76f60 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ji=C5=99=C3=AD=20Klime=C5=A1?= Date: Fri, 14 Feb 2014 10:05:42 +0100 Subject: [PATCH] ifcfg-rh: allow missing (empty TEAM_CONFIG), which is valid configuration When config is NULL libteam will use its own default configuration. Commit 76c3bd9898611ebbb6b33890257206b5776b79e7 changed that and refused to create 'team' setting making connection invalid. It didn't set an error as well, which resulted in ifcfg-rh: parsing /etc/sysconfig/network-scripts/ifcfg-team ... ifcfg-rh: error: (unknown) GLib-CRITICAL **: g_propagate_error: assertion `src != NULL' failed --- src/settings/plugins/ifcfg-rh/plugin.c | 5 ++++- src/settings/plugins/ifcfg-rh/reader.c | 8 ++++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/settings/plugins/ifcfg-rh/plugin.c b/src/settings/plugins/ifcfg-rh/plugin.c index 6024202f92..0f8fcb8a00 100644 --- a/src/settings/plugins/ifcfg-rh/plugin.c +++ b/src/settings/plugins/ifcfg-rh/plugin.c @@ -136,7 +136,10 @@ _internal_new_connection (SCPluginIfcfg *self, PLUGIN_PRINT (IFCFG_PLUGIN_NAME, " error: %s", (local && local->message) ? local->message : "(unknown)"); } - g_propagate_error (error, local); + if (local) + g_propagate_error (error, local); + else + g_set_error (error, IFCFG_PLUGIN_ERROR, 0, "(unknown)"); return NULL; } diff --git a/src/settings/plugins/ifcfg-rh/reader.c b/src/settings/plugins/ifcfg-rh/reader.c index 41055a2d2e..82d2af26c2 100644 --- a/src/settings/plugins/ifcfg-rh/reader.c +++ b/src/settings/plugins/ifcfg-rh/reader.c @@ -4193,6 +4193,7 @@ bond_connection_from_ifcfg (const char *file, return connection; } +/* Check 'error' for errors. Missing config (NULL return value) is a valid case. */ static char * read_team_config (shvarFile *ifcfg, const char *key, GError **error) { @@ -4225,6 +4226,7 @@ make_team_setting (shvarFile *ifcfg, { NMSettingTeam *s_team; char *value; + GError *local_err = NULL; s_team = NM_SETTING_TEAM (nm_setting_team_new ()); @@ -4237,9 +4239,11 @@ make_team_setting (shvarFile *ifcfg, g_object_set (s_team, NM_SETTING_TEAM_INTERFACE_NAME, value, NULL); g_free (value); - value = read_team_config (ifcfg, "TEAM_CONFIG", error); - if (!value) + value = read_team_config (ifcfg, "TEAM_CONFIG", &local_err); + if (local_err) { + g_propagate_error (error, local_err); goto error; + } g_object_set (s_team, NM_SETTING_TEAM_CONFIG, value, NULL); g_free (value);