EAP AgentPassphrase has been set on replies from the agent and
removed on any error. It has been used by the wifi plugin as a
backup if the normal wifi passphrase is unset. The normal passphrase
is removed only on invalid key errors with a comment indicating
that EAP does not always signal invalid key errors although the
key is incorrect.
Thus the implementation can end up in a situation where the normal
passphrase is wrong but not removed resulting in unnecessarily
retrying with an erroneous key.
---
src/connman.h | 4 +---
src/service.c | 36 +++++++-----------------------------
2 files changed, 8 insertions(+), 32 deletions(-)
diff --git a/src/connman.h b/src/connman.h
index bf59dbf..f18b2f3 100644
--- a/src/connman.h
+++ b/src/connman.h
@@ -2,7 +2,7 @@
*
* Connection Manager
*
- * Copyright (C) 2007-2012 Intel Corporation. All rights reserved.
+ * Copyright (C) 2007-2014 Intel Corporation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
@@ -756,8 +756,6 @@ void __connman_service_set_agent_identity(struct
connman_service *service,
int __connman_service_set_passphrase(struct connman_service *service,
const char *passphrase);
const char *__connman_service_get_passphrase(struct connman_service *service);
-void __connman_service_set_agent_passphrase(struct connman_service *service,
- const char *agent_passphrase);
int __connman_service_reset_ipconfig(struct connman_service *service,
enum connman_ipconfig_type type, DBusMessageIter *array,
enum connman_service_state *new_state);
diff --git a/src/service.c b/src/service.c
index 33cce14..212c5a4 100644
--- a/src/service.c
+++ b/src/service.c
@@ -84,7 +84,6 @@ struct connman_service {
unsigned int order;
char *name;
char *passphrase;
- char *agent_passphrase;
bool roaming;
struct connman_ipconfig *ipconfig_ipv4;
struct connman_ipconfig *ipconfig_ipv6;
@@ -2809,20 +2808,6 @@ const char *__connman_service_get_passphrase(struct
connman_service *service)
return service->passphrase;
}
-void __connman_service_set_agent_passphrase(struct connman_service *service,
- const char *agent_passphrase)
-{
- if (service->hidden)
- return;
- g_free(service->agent_passphrase);
- service->agent_passphrase = g_strdup(agent_passphrase);
-
- if (service->network)
- connman_network_set_string(service->network,
- "WiFi.AgentPassphrase",
- service->agent_passphrase);
-}
-
static DBusMessage *get_properties(DBusConnection *conn,
DBusMessage *msg, void *user_data)
{
@@ -3982,9 +3967,6 @@ bool __connman_service_remove(struct connman_service
*service)
g_free(service->passphrase);
service->passphrase = NULL;
- g_free(service->agent_passphrase);
- service->agent_passphrase = NULL;
-
g_free(service->identity);
service->identity = NULL;
@@ -4435,7 +4417,6 @@ static void service_free(gpointer user_data)
g_free(service->pac);
g_free(service->name);
g_free(service->passphrase);
- g_free(service->agent_passphrase);
g_free(service->identifier);
g_free(service->eap);
g_free(service->identity);
@@ -5004,12 +4985,10 @@ int __connman_service_add_passphrase(struct
connman_service *service,
switch (service->security) {
case CONNMAN_SERVICE_SECURITY_WEP:
case CONNMAN_SERVICE_SECURITY_PSK:
- err = __connman_service_set_passphrase(service, passphrase);
- break;
case CONNMAN_SERVICE_SECURITY_8021X:
- __connman_service_set_agent_passphrase(service,
- passphrase);
+ err = __connman_service_set_passphrase(service, passphrase);
break;
+
case CONNMAN_SERVICE_SECURITY_UNKNOWN:
case CONNMAN_SERVICE_SECURITY_NONE:
case CONNMAN_SERVICE_SECURITY_WPA:
@@ -5424,15 +5403,15 @@ int __connman_service_indicate_error(struct
connman_service *service,
set_error(service, error);
- if (service->error == CONNMAN_SERVICE_ERROR_INVALID_KEY)
- __connman_service_set_passphrase(service, NULL);
-
/*
* Supplicant does not always return invalid key error for
* WPA-EAP so clear the credentials always.
*/
+ if (service->error == CONNMAN_SERVICE_ERROR_INVALID_KEY ||
+ service->security == CONNMAN_SERVICE_SECURITY_8021X)
+ __connman_service_set_passphrase(service, NULL);
+
__connman_service_set_agent_identity(service, NULL);
- __connman_service_set_agent_passphrase(service, NULL);
__connman_service_ipconfig_indicate_state(service,
CONNMAN_SERVICE_STATE_FAILURE,
@@ -5844,8 +5823,7 @@ static int service_connect(struct connman_service
*service)
*/
if ((!service->identity &&
!service->agent_identity) ||
- (!service->passphrase &&
- !service->agent_passphrase))
+ !service->passphrase)
return -ENOKEY;
break;
--
1.8.5.2
_______________________________________________
connman mailing list
[email protected]
https://lists.connman.net/mailman/listinfo/connman