diff options
Diffstat (limited to 'src/settings/nm-settings-connection.c')
| -rw-r--r-- | src/settings/nm-settings-connection.c | 39 |
1 files changed, 21 insertions, 18 deletions
diff --git a/src/settings/nm-settings-connection.c b/src/settings/nm-settings-connection.c index 0cb2920c..45a1b664 100644 --- a/src/settings/nm-settings-connection.c +++ b/src/settings/nm-settings-connection.c @@ -2129,6 +2129,7 @@ nm_settings_connection_set_flags_all (NMSettingsConnection *self, NMSettingsConn old_flags = priv->flags; if (old_flags != flags) { + _LOGT ("update settings-connection flags to 0x%x (was 0x%x)", (guint) flags, (guint) priv->flags); priv->flags = flags; _notify (self, PROP_FLAGS); if (NM_FLAGS_HAS (old_flags, NM_SETTINGS_CONNECTION_FLAGS_UNSAVED) != NM_FLAGS_HAS (flags, NM_SETTINGS_CONNECTION_FLAGS_UNSAVED)) @@ -2316,33 +2317,35 @@ void nm_settings_connection_read_and_fill_timestamp (NMSettingsConnection *self) { NMSettingsConnectionPrivate *priv = NM_SETTINGS_CONNECTION_GET_PRIVATE (self); + gs_unref_keyfile GKeyFile *timestamps_file = NULL; + gs_free_error GError *error = NULL; + gs_free char *tmp_str = NULL; const char *connection_uuid; - guint64 timestamp = 0; - GKeyFile *timestamps_file; - GError *err = NULL; - char *tmp_str; + gint64 timestamp; g_return_if_fail (NM_IS_SETTINGS_CONNECTION (self)); - /* Get timestamp from database file */ timestamps_file = g_key_file_new (); - g_key_file_load_from_file (timestamps_file, SETTINGS_TIMESTAMPS_FILE, G_KEY_FILE_KEEP_COMMENTS, NULL); + if (!g_key_file_load_from_file (timestamps_file, SETTINGS_TIMESTAMPS_FILE, G_KEY_FILE_KEEP_COMMENTS, &error)) { + _LOGD ("failed to read connection timestamp: %s", error->message); + return; + } + connection_uuid = nm_settings_connection_get_uuid (self); - tmp_str = g_key_file_get_value (timestamps_file, "timestamps", connection_uuid, &err); - if (tmp_str) { - timestamp = g_ascii_strtoull (tmp_str, NULL, 10); - g_free (tmp_str); + tmp_str = g_key_file_get_value (timestamps_file, "timestamps", connection_uuid, &error); + if (!tmp_str) { + _LOGD ("failed to read connection timestamp: %s", error->message); + return; } - /* Update connection's timestamp */ - if (!err) { - priv->timestamp = timestamp; - priv->timestamp_set = TRUE; - } else { - _LOGD ("failed to read connection timestamp: %s", err->message); - g_clear_error (&err); + timestamp = _nm_utils_ascii_str_to_int64 (tmp_str, 10, 0, G_MAXINT64, -1); + if (timestamp < 0) { + _LOGD ("failed to read connection timestamp: %s", "invalid number"); + return; } - g_key_file_free (timestamps_file); + + priv->timestamp = timestamp; + priv->timestamp_set = TRUE; } /** |