diff options
author | Thomas Haller <thaller@redhat.com> | 2015-08-21 14:29:34 +0200 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2015-08-25 16:37:43 +0200 |
commit | e5c59d1f3834c613bbf0c296370d01af8cd946ca (patch) | |
tree | d64966131ae902f3a0bd46cc3bb6a3c5096853c9 | |
parent | 92dda6472cb881fc9965a014f16ffabb370b1e55 (diff) | |
download | NetworkManager-e5c59d1f3834c613bbf0c296370d01af8cd946ca.tar.gz |
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.
-rw-r--r-- | src/settings/nm-secret-agent.c | 7 |
1 files 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); |