summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2015-08-21 14:29:34 +0200
committerThomas Haller <thaller@redhat.com>2015-08-25 16:37:43 +0200
commite5c59d1f3834c613bbf0c296370d01af8cd946ca (patch)
treed64966131ae902f3a0bd46cc3bb6a3c5096853c9
parent92dda6472cb881fc9965a014f16ffabb370b1e55 (diff)
downloadNetworkManager-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.c7
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);