From e5c59d1f3834c613bbf0c296370d01af8cd946ca Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Fri, 21 Aug 2015 14:29:34 +0200 Subject: [PATCH] secret-agent: don't assert against existing getpwuid() entry There is a race and there is no guarantee that getpwuid() can lookup a uid that (previously) existed. Just accept %NULL as @owner_username. --- src/settings/nm-secret-agent.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/settings/nm-secret-agent.c b/src/settings/nm-secret-agent.c index d1c41a8287..2503b6adaf 100644 --- a/src/settings/nm-secret-agent.c +++ b/src/settings/nm-secret-agent.c @@ -568,6 +568,7 @@ nm_secret_agent_new (GDBusMethodInvocation *context, char *hash_str; struct passwd *pw; GDBusProxy *proxy; + char *owner_username = NULL; g_return_val_if_fail (context != NULL, NULL); g_return_val_if_fail (NM_IS_AUTH_SUBJECT (subject), NULL); @@ -575,14 +576,14 @@ nm_secret_agent_new (GDBusMethodInvocation *context, g_return_val_if_fail (identifier != NULL, NULL); pw = getpwuid (nm_auth_subject_get_unix_process_uid (subject)); - g_return_val_if_fail (pw != NULL, NULL); - g_return_val_if_fail (pw->pw_name[0] != '\0', NULL); + if (pw && pw->pw_name && pw->pw_name[0]) + owner_username = g_strdup (pw->pw_name); self = (NMSecretAgent *) g_object_new (NM_TYPE_SECRET_AGENT, NULL); priv = NM_SECRET_AGENT_GET_PRIVATE (self); priv->identifier = g_strdup (identifier); - priv->owner_username = g_strdup (pw->pw_name); + priv->owner_username = owner_username; priv->dbus_owner = g_strdup (nm_auth_subject_get_unix_process_dbus_sender (subject)); priv->capabilities = capabilities; priv->subject = g_object_ref (subject);