Send connman mailing list submissions to
        connman@lists.01.org

To subscribe or unsubscribe via email, send a message with subject or
body 'help' to
        connman-requ...@lists.01.org

You can reach the person managing the list at
        connman-ow...@lists.01.org

When replying, please edit your Subject line so it is more specific
than "Re: Contents of connman digest..."

Today's Topics:

   1. RE: [PATCH] timeserver: Fix time update manual->auto at startup
      (VAUTRIN Emmanuel (Canal Plus Prestataire))
   2. RE: [PATCH] service: Prevent auto connection during passphrase request
      (VAUTRIN Emmanuel (Canal Plus Prestataire))
   3. Re: [PATCH] timeserver: Fix time update manual->auto at startup
      (Daniel Wagner)
   4. Re: [PATCH] timerserver: Fix time update manual->auto
      (Daniel Wagner)


----------------------------------------------------------------------

Date: Mon, 26 Apr 2021 18:45:45 +0000
From: "VAUTRIN Emmanuel (Canal Plus Prestataire)"
        <emmanuel.vaut...@cpexterne.org>
Subject: RE: [PATCH] timeserver: Fix time update manual->auto at
        startup
To: Daniel Wagner <w...@monom.org>
Cc: "connman@lists.01.org" <connman@lists.01.org>
Message-ID:  <pr1pr02mb47940aef6bbf1b95046dd11b93...@pr1pr02mb4794.eur
        prd02.prod.outlook.com>
Content-Type: text/plain; charset="iso-8859-1"

Hi Daniel

> Ahh, stupid me.
Do not say that.

> I reproduced it (thanks for your instructions) and I
> think I found a better way to fix this. The thing I don't like at your
> patch is that it fixes it at the wrong place. I'll send out a patch
> which fixes the problem for me.
I have tested your patch by my side, excluding the first change that was 
probably cosmetics,
and it seems to work fine. I let you integrate it to the master.

These are great news to finally be able to close this point!


Best Regards,

Emmanuel

------------------------------

Date: Mon, 26 Apr 2021 19:10:30 +0000
From: "VAUTRIN Emmanuel (Canal Plus Prestataire)"
        <emmanuel.vaut...@cpexterne.org>
Subject: RE: [PATCH] service: Prevent auto connection during
        passphrase request
To: Daniel Wagner <w...@monom.org>
Cc: "connman@lists.01.org" <connman@lists.01.org>
Message-ID:  <pr1pr02mb47945b2aa868778fdba7fe0293...@pr1pr02mb4794.eur
        prd02.prod.outlook.com>
Content-Type: text/plain; charset="iso-8859-1"

Avoid concurrent associations between a user connection to a secure
service, blocked by an agent passphrase input request, and a starting
auto connection on a different service of the same interface.

This issue happens when the end-user wants to connect to a new secure
Wifi network (W2) via an interface where another Wifi network (W1) is
already connected. When doing that, the following steps happen:
1. Disconnection of current network (W1).
2. User-connection to W2, held by the passphrase request.
3. Auto-connection to a known available Wifi network (W1) succeeding.
4. User-connection to W2, reactivated by the passphrase response,
failing, as another Wifi (W1) is already connected.
In this configuration, W2 will never be able to connect.
---
 src/service.c | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/src/service.c b/src/service.c
index 20917a8923a4..f6a4e53fe262 100644
--- a/src/service.c
+++ b/src/service.c
@@ -49,6 +49,7 @@ static DBusConnection *connection = NULL;
 
 static GList *service_list = NULL;
 static GHashTable *service_hash = NULL;
+static GHashTable *passphrase_requested = NULL;
 static GSList *counter_list = NULL;
 static unsigned int autoconnect_id = 0;
 static unsigned int vpn_autoconnect_id = 0;
@@ -4209,6 +4210,7 @@ static bool auto_connect_service(GList *services,
        bool ignore[MAX_CONNMAN_SERVICE_TYPES] = { };
        bool autoconnecting = false;
        GList *list;
+       int index;
 
        DBG("preferred %d sessions %d reason %s", preferred, active_count,
                reason2string(reason));
@@ -4230,6 +4232,11 @@ static bool auto_connect_service(GList *services,
                        continue;
                }
 
+               index = __connman_service_get_index(service);
+               if (g_hash_table_lookup(passphrase_requested,
+                                       GINT_TO_POINTER(index)))
+                       return true;
+
                if (service->pending ||
                                is_connecting(service->state) ||
                                is_connected(service->state)) {
@@ -5780,6 +5787,7 @@ static void request_input_cb(struct connman_service 
*service,
        struct connman_device *device;
        const char *security;
        int err = 0;
+       int index;
 
        DBG("RequestInput return, %p", service);
 
@@ -5842,6 +5850,10 @@ static void request_input_cb(struct connman_service 
*service,
                err = __connman_service_set_passphrase(service, passphrase);
 
  done:
+       index = __connman_service_get_index(service);
+       g_hash_table_remove(passphrase_requested,
+                               GINT_TO_POINTER(index));
+
        if (err >= 0) {
                /* We forget any previous error. */
                set_error(service, CONNMAN_SERVICE_ERROR_UNKNOWN);
@@ -6693,6 +6705,7 @@ static int service_connect(struct connman_service 
*service)
 int __connman_service_connect(struct connman_service *service,
                        enum connman_service_connect_reason reason)
 {
+       int index;
        int err;
 
        DBG("service %p state %s connect reason %s -> %s",
@@ -6779,6 +6792,13 @@ int __connman_service_connect(struct connman_service 
*service,
                        if (service->hidden && err != -EINPROGRESS)
                                service->pending = pending;
 
+                       if (err == -EINPROGRESS) {
+                               index = __connman_service_get_index(service);
+                               g_hash_table_replace(passphrase_requested,
+                                               GINT_TO_POINTER(index),
+                                               GINT_TO_POINTER(true));
+                       }
+
                        return err;
                }
        }
@@ -7750,6 +7770,8 @@ int __connman_service_init(void)
        service_hash = g_hash_table_new_full(g_str_hash, g_str_equal,
                                                        NULL, service_free);
 
+       passphrase_requested = g_hash_table_new(g_direct_hash, g_direct_equal);
+
        services_notify = g_new0(struct _services_notify, 1);
        services_notify->remove = g_hash_table_new_full(g_str_hash,
                        g_str_equal, g_free, NULL);
@@ -7782,6 +7804,9 @@ void __connman_service_cleanup(void)
        g_hash_table_destroy(service_hash);
        service_hash = NULL;
 
+       g_hash_table_destroy(passphrase_requested);
+       passphrase_requested = NULL;
+
        g_slist_free(counter_list);
        counter_list = NULL;
 
-- 
2.25.1

------------------------------

Date: Tue, 27 Apr 2021 08:45:01 +0200
From: Daniel Wagner <w...@monom.org>
Subject: Re: [PATCH] timeserver: Fix time update manual->auto at
        startup
To: "VAUTRIN Emmanuel (Canal Plus Prestataire)"
        <emmanuel.vaut...@cpexterne.org>
Cc: "connman@lists.01.org" <connman@lists.01.org>
Message-ID: <20210427064501.idqitzd5nv3gp...@beryllium.lan>
Content-Type: text/plain; charset=us-ascii

On Mon, Apr 26, 2021 at 06:45:45PM +0000, VAUTRIN Emmanuel (Canal Plus 
Prestataire) wrote:
> I have tested your patch by my side, excluding the first change that was 
> probably cosmetics,
> and it seems to work fine. I let you integrate it to the master.

Thanks for testing. I am going to apply the patch now. And yes, the
first hunk is just cosmetic, so that the two condition look alike. My
future me will like it :)

------------------------------

Date: Tue, 27 Apr 2021 08:45:43 +0200
From: Daniel Wagner <w...@monom.org>
Subject: Re: [PATCH] timerserver: Fix time update manual->auto
To: connman@lists.01.org
Cc: "VAUTRIN Emmanuel (Canal Plus Prestataire)"
        <emmanuel.vaut...@cpexterne.org>
Message-ID: <20210427064543.3voglanfh6cqu...@beryllium.lan>
Content-Type: text/plain; charset=us-ascii

On Sun, Apr 25, 2021 at 07:58:34PM +0200, Daniel Wagner wrote:
> __connman_timeserver_conf_update() will block the update if the
> service is not matching the current used service.  In case where
> ts_service is NULL it should not block the update. This can happen
> by a manual to auto TimeUpdate settings change.
> 
> Reported by Emmanuel Vautrin

Patch applied (added the additional reasoning why the first hunk is in
the change).

------------------------------

Subject: Digest Footer

_______________________________________________
connman mailing list -- connman@lists.01.org
To unsubscribe send an email to connman-le...@lists.01.org


------------------------------

End of connman Digest, Vol 66, Issue 31
***************************************

Reply via email to