Send connman mailing list submissions to
        [email protected]

To subscribe or unsubscribe via the World Wide Web, visit
        https://lists.01.org/mailman/listinfo/connman
or, via email, send a message with subject or body 'help' to
        [email protected]

You can reach the person managing the list at
        [email protected]

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


Today's Topics:

   1. [PATCH 0/4] Fixed Several Memory Leaks (Saurav Babu)
   2. [PATCH 1/4] gdbus: Fix Memory Leak (Saurav Babu)
   3. [PATCH 2/4] gweb: Properly handle memory failure scenarios
      (Saurav Babu)
   4. [PATCH 3/4] dhcp: Fixed Memory Leak (Saurav Babu)
   5. [PATCH 4/4] service: Fixed Memory Leak (Saurav Babu)
   6. Re: [PATCH 4/4] service: Fixed Memory Leak (Jukka Rissanen)
   7. [PATCHv2 4/4] service: Fixed Memory Leak (Saurav Babu)


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

Message: 1
Date: Thu, 26 Nov 2015 14:52:46 +0530
From: Saurav Babu <[email protected]>
To: [email protected]
Cc: [email protected]
Subject: [PATCH 0/4] Fixed Several Memory Leaks
Message-ID:
        <[email protected]>

Saurav Babu (4):
  gdbus: Fix Memory Leak
  gweb: Properly handle memory failure scenarios
  dhcp: Fixed Memory Leak
  service: Fixed Memory Leak

 gdbus/watch.c | 6 ++++++
 gweb/gweb.c   | 9 ++++++++-
 src/dhcp.c    | 6 +++++-
 src/service.c | 7 ++++++-
 4 files changed, 25 insertions(+), 3 deletions(-)

-- 
1.9.1



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

Message: 2
Date: Thu, 26 Nov 2015 14:52:47 +0530
From: Saurav Babu <[email protected]>
To: [email protected]
Cc: [email protected]
Subject: [PATCH 1/4] gdbus: Fix Memory Leak
Message-ID:
        <[email protected]>

Members of data are allocated memory but not freed only data is freed.
This patch frees other members of data also.
---
 gdbus/watch.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/gdbus/watch.c b/gdbus/watch.c
index b60f650..8ab9aae 100644
--- a/gdbus/watch.c
+++ b/gdbus/watch.c
@@ -248,6 +248,12 @@ proceed:
        data->argument = g_strdup(argument);
 
        if (!add_match(data, filter)) {
+               g_free(data->name);
+               g_free(data->owner);
+               g_free(data->path);
+               g_free(data->interface);
+               g_free(data->member);
+               g_free(data->argument);
                g_free(data);
                return NULL;
        }
-- 
1.9.1



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

Message: 3
Date: Thu, 26 Nov 2015 14:52:48 +0530
From: Saurav Babu <[email protected]>
To: [email protected]
Cc: [email protected]
Subject: [PATCH 2/4] gweb: Properly handle memory failure scenarios
Message-ID:
        <[email protected]>

---
 gweb/gweb.c | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/gweb/gweb.c b/gweb/gweb.c
index 5f18a0e..f6e819f 100644
--- a/gweb/gweb.c
+++ b/gweb/gweb.c
@@ -1472,13 +1472,20 @@ GWebParser *g_web_parser_new(const char *begin, const 
char *end,
        parser->ref_count = 1;
 
        parser->begin_token = g_strdup(begin);
-       parser->end_token = g_strdup(end);
 
        if (!parser->begin_token) {
                g_free(parser);
                return NULL;
        }
 
+       parser->end_token = g_strdup(end);
+
+       if (!parser->end_token) {
+               g_free(parser->begin_token);
+               g_free(parser);
+               return NULL;
+       }
+
        parser->func = func;
        parser->user_data = user_data;
 
-- 
1.9.1



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

Message: 4
Date: Thu, 26 Nov 2015 14:52:49 +0530
From: Saurav Babu <[email protected]>
To: [email protected]
Cc: [email protected]
Subject: [PATCH 3/4] dhcp: Fixed Memory Leak
Message-ID:
        <[email protected]>

Memory allocated should be feed when apply_lease_available_on_network()
fails
---
 src/dhcp.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/src/dhcp.c b/src/dhcp.c
index 9a74362..371983b 100644
--- a/src/dhcp.c
+++ b/src/dhcp.c
@@ -461,8 +461,12 @@ static void lease_available_cb(GDHCPClient *dhcp_client, 
gpointer user_data)
                __connman_ipconfig_set_gateway(dhcp->ipconfig, gateway);
        }
 
-       if (!apply_lease_available_on_network(dhcp_client, dhcp))
+       if (!apply_lease_available_on_network(dhcp_client, dhcp)) {
+               g_free(address);
+               g_free(netmask);
+               g_free(gateway);
                return;
+       }
 
        if (ip_change)
                dhcp_valid(dhcp);
-- 
1.9.1



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

Message: 5
Date: Thu, 26 Nov 2015 14:52:50 +0530
From: Saurav Babu <[email protected]>
To: [email protected]
Cc: [email protected]
Subject: [PATCH 4/4] service: Fixed Memory Leak
Message-ID:
        <[email protected]>

When memory allocation fails for any value of j for servers[j] then all
the memory allocated for 0 to j-1 should be freed alongwith servers
---
 src/service.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/service.c b/src/service.c
index e3317dd..93c417b 100644
--- a/src/service.c
+++ b/src/service.c
@@ -2732,8 +2732,13 @@ int __connman_service_timeserver_remove(struct 
connman_service *service,
        for (i = 0, j = 0; i < len; i++) {
                if (g_strcmp0(service->timeservers[i], timeserver) != 0) {
                        servers[j] = g_strdup(service->timeservers[i]);
-                       if (!servers[j])
+                       if (!servers[j]) {
+                               int k;
+                               for(k = 0; k < j; k++)
+                                       g_free(servers[k]);
+                               g_free(servers);
                                return -ENOMEM;
+                       }
                        j++;
                }
        }
-- 
1.9.1



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

Message: 6
Date: Thu, 26 Nov 2015 12:06:40 +0200
From: Jukka Rissanen <[email protected]>
To: Saurav Babu <[email protected]>, [email protected]
Cc: [email protected]
Subject: Re: [PATCH 4/4] service: Fixed Memory Leak
Message-ID: <[email protected]>
Content-Type: text/plain; charset="UTF-8"

Hi,

On Thu, 2015-11-26 at 14:52 +0530, Saurav Babu wrote:
> When memory allocation fails for any value of j for servers[j] then
> all
> the memory allocated for 0 to j-1 should be freed alongwith servers
> ---
> ?src/service.c | 7 ++++++-
> ?1 file changed, 6 insertions(+), 1 deletion(-)
> 
> diff --git a/src/service.c b/src/service.c
> index e3317dd..93c417b 100644
> --- a/src/service.c
> +++ b/src/service.c
> @@ -2732,8 +2732,13 @@ int __connman_service_timeserver_remove(struct
> connman_service *service,
> ?     for (i = 0, j = 0; i < len; i++) {
> ?             if (g_strcmp0(service->timeservers[i], timeserver)
> != 0) {
> ?                     servers[j] = g_strdup(service-
> >timeservers[i]);
> -                     if (!servers[j])
> +                     if (!servers[j]) {
> +                             int k;
> +                             for(k = 0; k < j; k++)
> +                                     g_free(servers[k]);

The above loop could probably be optimized to

                                while (j >= 0)
                                        g_free(servers[--j]);

that way you would not need to use additional variable.

> +                             g_free(servers);
> ?                             return -ENOMEM;
> +                     }
> ?                     j++;
> ?             }
> ?     }


Cheers,
Jukka




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

Message: 7
Date: Thu, 26 Nov 2015 16:21:20 +0530
From: Saurav Babu <[email protected]>
To: [email protected]
Cc: [email protected]
Subject: [PATCHv2 4/4] service: Fixed Memory Leak
Message-ID:
        <[email protected]>

When memory allocation fails for any value of j for servers[j] then all
the memory allocated for 0 to j-1 should be freed alongwith servers
---
 src/service.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/src/service.c b/src/service.c
index e3317dd..1aced50 100644
--- a/src/service.c
+++ b/src/service.c
@@ -2732,8 +2732,12 @@ int __connman_service_timeserver_remove(struct 
connman_service *service,
        for (i = 0, j = 0; i < len; i++) {
                if (g_strcmp0(service->timeservers[i], timeserver) != 0) {
                        servers[j] = g_strdup(service->timeservers[i]);
-                       if (!servers[j])
+                       if (!servers[j]) {
+                               while (j >= 0)
+                                       g_free(servers[--j]);
+                               g_free(servers);
                                return -ENOMEM;
+                       }
                        j++;
                }
        }
-- 
1.9.1



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

Subject: Digest Footer

_______________________________________________
connman mailing list
[email protected]
https://lists.01.org/mailman/listinfo/connman


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

End of connman Digest, Vol 1, Issue 7
*************************************

Reply via email to