2018-03-22 20:07:55

by Szymon Janc

[permalink] [raw]
Subject: [PATCH] gatt: Fail to register service with invalid Includes property

This is optional property but if it is present it must be of
proper type.
---
src/gatt-database.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/src/gatt-database.c b/src/gatt-database.c
index a22fc3b85..19f03c544 100644
--- a/src/gatt-database.c
+++ b/src/gatt-database.c
@@ -1676,6 +1676,7 @@ static bool parse_includes(GDBusProxy *proxy, struct external_service *service)
DBusMessageIter array;
char *obj;

+ /* Includes property is optional */
if (!g_dbus_proxy_get_property(proxy, "Includes", &iter))
return true;

@@ -2682,8 +2683,10 @@ static bool database_add_service(struct external_service *service)
return false;
}

- if (!parse_includes(service->proxy, service))
+ if (!parse_includes(service->proxy, service)) {
error("Failed to read \"Includes\" property of service");
+ return false;
+ }

service->attrib = gatt_db_add_service(service->app->database->db, &uuid,
primary, service->attr_cnt);
--
2.14.3



2018-03-23 11:34:19

by Luiz Augusto von Dentz

[permalink] [raw]
Subject: Re: [PATCH] gatt: Fail to register service with invalid Includes property

Hi Szymon,

On Thu, Mar 22, 2018 at 10:07 PM, Szymon Janc <[email protected]> wrote:
> This is optional property but if it is present it must be of
> proper type.
> ---
> src/gatt-database.c | 5 ++++-
> 1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/src/gatt-database.c b/src/gatt-database.c
> index a22fc3b85..19f03c544 100644
> --- a/src/gatt-database.c
> +++ b/src/gatt-database.c
> @@ -1676,6 +1676,7 @@ static bool parse_includes(GDBusProxy *proxy, struct external_service *service)
> DBusMessageIter array;
> char *obj;
>
> + /* Includes property is optional */
> if (!g_dbus_proxy_get_property(proxy, "Includes", &iter))
> return true;
>
> @@ -2682,8 +2683,10 @@ static bool database_add_service(struct external_service *service)
> return false;
> }
>
> - if (!parse_includes(service->proxy, service))
> + if (!parse_includes(service->proxy, service)) {
> error("Failed to read \"Includes\" property of service");
> + return false;
> + }
>
> service->attrib = gatt_db_add_service(service->app->database->db, &uuid,
> primary, service->attr_cnt);
> --
> 2.14.3

Applied, thanks.

--
Luiz Augusto von Dentz