Old versions such as 0.9.4 generated 40-character UUIDs with no hashes, but libnm-util regards them as invalid. That means that existing connections stop working when upgrading from 0.9.4.
Continue accepting such UUIDs as valid, and add a test so that we don't forget in future. --- libnm-util/nm-utils.c | 9 ++++++++- libnm-util/tests/test-general.c | 24 ++++++++++++++++++++++++ 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/libnm-util/nm-utils.c b/libnm-util/nm-utils.c index e869e0a..c0b18f6 100644 --- a/libnm-util/nm-utils.c +++ b/libnm-util/nm-utils.c @@ -2264,5 +2264,12 @@ nm_utils_is_uuid (const char *str) p++; } - return (num_dashes == 4) && (p - str == 36); + if ((num_dashes == 4) && (p - str == 36)) + return TRUE; + + /* Backwards compat for older configurations */ + if ((num_dashes == 0) && (p - str == 40)) + return TRUE; + + return FALSE; } diff --git a/libnm-util/tests/test-general.c b/libnm-util/tests/test-general.c index ff89128..3e6cee7 100644 --- a/libnm-util/tests/test-general.c +++ b/libnm-util/tests/test-general.c @@ -2075,6 +2075,29 @@ test_setting_802_1x_changed_signal (void) g_object_unref (connection); } +static void +test_setting_old_uuid (void) +{ + GError *error = NULL; + NMSetting *setting; + gboolean success; + + /* NetworkManager-0.9.4.0 generated 40-character UUIDs with no dashes, + * like this one. Test that we maintain compatibility. */ + const char *uuid = "f43bec2cdd60e5da381ebb1eb1fa39f3cc52660c"; + + setting = nm_setting_connection_new (); + g_object_set (G_OBJECT (setting), + NM_SETTING_CONNECTION_ID, "uuidtest", + NM_SETTING_CONNECTION_UUID, uuid, + NM_SETTING_CONNECTION_TYPE, NM_SETTING_WIRED_SETTING_NAME, + NULL); + + success = nm_setting_verify (NM_SETTING (setting), NULL, &error); + g_assert_no_error (error); + g_assert (success == TRUE); +} + int main (int argc, char **argv) { GError *error = NULL; @@ -2106,6 +2129,7 @@ int main (int argc, char **argv) test_setting_compare_vpn_secrets (NM_SETTING_SECRET_FLAG_NOT_SAVED, NM_SETTING_COMPARE_FLAG_IGNORE_NOT_SAVED_SECRETS, TRUE); test_setting_compare_vpn_secrets (NM_SETTING_SECRET_FLAG_NONE, NM_SETTING_COMPARE_FLAG_IGNORE_SECRETS, TRUE); test_setting_compare_vpn_secrets (NM_SETTING_SECRET_FLAG_NONE, NM_SETTING_COMPARE_FLAG_EXACT, FALSE); + test_setting_old_uuid (); test_connection_to_hash_setting_name (); test_setting_new_from_hash (); -- 1.8.3.1 _______________________________________________ networkmanager-list mailing list networkmanager-list@gnome.org https://mail.gnome.org/mailman/listinfo/networkmanager-list