2012-02-07 13:26:44

by Santiago Carot

[permalink] [raw]
Subject: [PATCH 1/2] attrib-server: Fix memory leak attaching attribute channels

Channel is not being released when the channel is attached over
an uninitialized GATT server.
---
src/attrib-server.c | 8 +++++++-
1 files changed, 7 insertions(+), 1 deletions(-)

diff --git a/src/attrib-server.c b/src/attrib-server.c
index 2995167..e51f695 100644
--- a/src/attrib-server.c
+++ b/src/attrib-server.c
@@ -1020,8 +1020,14 @@ guint attrib_channel_attach(GAttrib *attrib, gboolean out)
}

server = find_gatt_server(&channel->src);
- if (server == NULL)
+ if (server == NULL) {
+ char src[18];
+
+ ba2str(&channel->src, src);
+ error("No GATT server found in %s", src);
+ g_free(channel);
return 0;
+ }

channel->server = server;

--
1.7.9



2012-02-09 10:45:53

by Johan Hedberg

[permalink] [raw]
Subject: Re: [PATCH 1/2] attrib-server: Fix memory leak attaching attribute channels

Hi Santiago,

On Tue, Feb 07, 2012, Santiago Carot-Nemesio wrote:
> Channel is not being released when the channel is attached over
> an uninitialized GATT server.
> ---
> src/attrib-server.c | 8 +++++++-
> 1 files changed, 7 insertions(+), 1 deletions(-)

Both patches have been applied. Thanks.

Johan

2012-02-08 08:47:47

by Santiago Carot

[permalink] [raw]
Subject: Re: [PATCH 1/2] attrib-server: Fix memory leak attaching attribute channels

Hi Andrei,

2012/2/8 Andrei Emeltchenko <[email protected]>:
> Hi Santiago,
>
> On Tue, Feb 07, 2012 at 02:26:44PM +0100, Santiago Carot-Nemesio wrote:
>> Channel is not being released when the channel is attached over
>> an uninitialized GATT server.
>> ---
>> ?src/attrib-server.c | ? ?8 +++++++-
>> ?1 files changed, 7 insertions(+), 1 deletions(-)
>>
>> diff --git a/src/attrib-server.c b/src/attrib-server.c
>> index 2995167..e51f695 100644
>> --- a/src/attrib-server.c
>> +++ b/src/attrib-server.c
>> @@ -1020,8 +1020,14 @@ guint attrib_channel_attach(GAttrib *attrib, gboolean out)
>> ? ? ? }
>>
>> ? ? ? server = find_gatt_server(&channel->src);
>> - ? ? if (server == NULL)
>> + ? ? if (server == NULL) {
>> + ? ? ? ? ? ? char src[18];
>
> Don't we have a good define for this magic number? I saw it in several
> places.
>

That's a good point, I've also seen it in too many places but I don't
know if there is any macro for that, at least I didn't see it.

Regards.

2012-02-08 08:21:25

by Andrei Emeltchenko

[permalink] [raw]
Subject: Re: [PATCH 1/2] attrib-server: Fix memory leak attaching attribute channels

Hi Santiago,

On Tue, Feb 07, 2012 at 02:26:44PM +0100, Santiago Carot-Nemesio wrote:
> Channel is not being released when the channel is attached over
> an uninitialized GATT server.
> ---
> src/attrib-server.c | 8 +++++++-
> 1 files changed, 7 insertions(+), 1 deletions(-)
>
> diff --git a/src/attrib-server.c b/src/attrib-server.c
> index 2995167..e51f695 100644
> --- a/src/attrib-server.c
> +++ b/src/attrib-server.c
> @@ -1020,8 +1020,14 @@ guint attrib_channel_attach(GAttrib *attrib, gboolean out)
> }
>
> server = find_gatt_server(&channel->src);
> - if (server == NULL)
> + if (server == NULL) {
> + char src[18];

Don't we have a good define for this magic number? I saw it in several
places.

Best regards
Andrei Emeltchenko



2012-02-07 13:37:58

by Santiago Carot

[permalink] [raw]
Subject: [PATCH 2/2] attrib-server: Fix bad error message

---
src/attrib-server.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/src/attrib-server.c b/src/attrib-server.c
index e51f695..93a7b4f 100644
--- a/src/attrib-server.c
+++ b/src/attrib-server.c
@@ -171,7 +171,7 @@ static struct gatt_server *find_gatt_server(const bdaddr_t *bdaddr)
char addr[18];

ba2str(bdaddr, addr);
- error("Not GATT adapter found for address %s", addr);
+ error("No GATT server found in %s", addr);
return NULL;
}

--
1.7.9


2012-02-07 12:13:05

by Santiago Carot

[permalink] [raw]
Subject: Re: [PATCH 2/2] attrib-server: Fix bad error message

Hi,

2012/2/7 Anderson Lizardo <[email protected]>:
> Hi Santiago,
>
> On Tue, Feb 7, 2012 at 5:33 AM, Santiago Carot-Nemesio
> <[email protected]> wrote:
>> ---
>> ?src/attrib-server.c | ? ?2 +-
>> ?1 files changed, 1 insertions(+), 1 deletions(-)
>>
>> diff --git a/src/attrib-server.c b/src/attrib-server.c
>> index a23d5d2..3d4634f 100644
>> --- a/src/attrib-server.c
>> +++ b/src/attrib-server.c
>> @@ -171,7 +171,7 @@ static struct gatt_server *find_gatt_server(const bdaddr_t *bdaddr)
>> ? ? ? ? ? ? ? ?char addr[18];
>>
>> ? ? ? ? ? ? ? ?ba2str(bdaddr, addr);
>> - ? ? ? ? ? ? ? error("Not GATT adapter found for address %s", addr);
>> + ? ? ? ? ? ? ? error("Not GATT server found in %s", addr);
>
> You can also fix: Not -> No
>
>> ? ? ? ? ? ? ? ?return NULL;
>> ? ? ? ?}
>>
>> --
>> 1.7.9
>
Ok, ignore these two patches, I'll send another ones ASAP

2012-02-07 10:54:17

by Anderson Lizardo

[permalink] [raw]
Subject: Re: [PATCH 2/2] attrib-server: Fix bad error message

Hi Santiago,

On Tue, Feb 7, 2012 at 5:33 AM, Santiago Carot-Nemesio
<[email protected]> wrote:
> ---
> ?src/attrib-server.c | ? ?2 +-
> ?1 files changed, 1 insertions(+), 1 deletions(-)
>
> diff --git a/src/attrib-server.c b/src/attrib-server.c
> index a23d5d2..3d4634f 100644
> --- a/src/attrib-server.c
> +++ b/src/attrib-server.c
> @@ -171,7 +171,7 @@ static struct gatt_server *find_gatt_server(const bdaddr_t *bdaddr)
> ? ? ? ? ? ? ? ?char addr[18];
>
> ? ? ? ? ? ? ? ?ba2str(bdaddr, addr);
> - ? ? ? ? ? ? ? error("Not GATT adapter found for address %s", addr);
> + ? ? ? ? ? ? ? error("Not GATT server found in %s", addr);

You can also fix: Not -> No

> ? ? ? ? ? ? ? ?return NULL;
> ? ? ? ?}
>
> --
> 1.7.9

Best Regards,
--
Anderson Lizardo
Instituto Nokia de Tecnologia - INdT
Manaus - Brazil

2012-02-07 10:53:12

by Anderson Lizardo

[permalink] [raw]
Subject: Re: [PATCH 1/2] attrib-server: Fix memory leak attaching attribute channels

Hi Santiago,

On Tue, Feb 7, 2012 at 5:33 AM, Santiago Carot-Nemesio
<[email protected]> wrote:
> Channel is not being released when the channel is attached over
> an uninitialized GATT server.
> ---
> ?src/attrib-server.c | ? ?8 +++++++-
> ?1 files changed, 7 insertions(+), 1 deletions(-)
>
> diff --git a/src/attrib-server.c b/src/attrib-server.c
> index 2995167..a23d5d2 100644
> --- a/src/attrib-server.c
> +++ b/src/attrib-server.c
> @@ -1020,8 +1020,14 @@ guint attrib_channel_attach(GAttrib *attrib, gboolean out)
> ? ? ? ?}
>
> ? ? ? ?server = find_gatt_server(&channel->src);
> - ? ? ? if (server == NULL)
> + ? ? ? if (server == NULL) {
> + ? ? ? ? ? ? ? char src[18];
> +
> + ? ? ? ? ? ? ? ba2str(&channel->src, src);
> + ? ? ? ? ? ? ? error("Not GATT server found in %s", src);

Looks ok, except for the typo: Not -> No

> + ? ? ? ? ? ? ? g_free(channel);
> ? ? ? ? ? ? ? ?return 0;
> + ? ? ? }
>
> ? ? ? ?channel->server = server;
>
> --
> 1.7.9

Best Regards,
--
Anderson Lizardo
Instituto Nokia de Tecnologia - INdT
Manaus - Brazil