summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBeniamino Galvani <bgalvani@redhat.com>2016-09-13 14:54:08 +0200
committerBeniamino Galvani <bgalvani@redhat.com>2016-09-14 23:34:25 +0200
commitf666efed0de21343ad8b847bf2c7def0b3e2625b (patch)
tree56b92ca8383037dce93028c559fbd4b825522f81
parentf3099db28e193a4c3736a651af2d10102cc39853 (diff)
downloadNetworkManager-f666efed0de21343ad8b847bf2c7def0b3e2625b.tar.gz
clients: fix matching of connection path
Since we use g_str_has_prefix() to match a request_id with the connection path, there can be wrong matches. For example: request_id: /org/freedesktop/NetworkManager/Settings/10/802-1x connection: /org/freedesktop/NetworkManager/Settings/1 would match. Add a trailing slash to the connection path stored in the agent to prevent this.
-rw-r--r--clients/common/nm-secret-agent-simple.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/clients/common/nm-secret-agent-simple.c b/clients/common/nm-secret-agent-simple.c
index 0c90eba36e..550fefa809 100644
--- a/clients/common/nm-secret-agent-simple.c
+++ b/clients/common/nm-secret-agent-simple.c
@@ -751,10 +751,18 @@ nm_secret_agent_simple_enable (NMSecretAgentSimple *self, const char *path)
{
NMSecretAgentSimplePrivate *priv = NM_SECRET_AGENT_SIMPLE_GET_PRIVATE (self);
GList *requests, *iter;
+ gs_free char *path_full = NULL;
- if (g_strcmp0 (path, priv->path) != 0) {
+ /* The path is only used to match a request_id with the current
+ * connection. Since the request_id is "${CONNECTION_PATH}/${SETTING}",
+ * add a trailing '/' to the path to match the full connection path.
+ */
+ path_full = path ? g_strdup_printf ("%s/", path) : NULL;
+
+ if (g_strcmp0 (path_full, priv->path) != 0) {
g_free (priv->path);
- priv->path = g_strdup (path);
+ priv->path = path_full;
+ path_full = NULL;
}
if (priv->enabled)