diff options
author | Alexander Kanavin <alex.kanavin@gmail.com> | 2019-12-12 19:14:21 +0100 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2019-12-15 09:10:46 +0000 |
commit | 47a9dac49f5cf3781c0494fa02c86701131225c3 (patch) | |
tree | c41d5090a7f50c9fa73038ed6e529d6af920e397 /meta/recipes-connectivity/bluez5 | |
parent | c26566e44ba2e01111674d74a1c590ef6c5baa02 (diff) | |
download | poky-47a9dac49f5cf3781c0494fa02c86701131225c3.tar.gz |
bluez: update 5.50 -> 5.52
Drop a big pile of backports.
Disable zsh completions, as they're unlikely to be useful.
(From OE-Core rev: dad8cd50bcc4203a65d153dc2445502c1e728975)
(From OE-Core rev: 1a31a31a3bd68f027ba0a13f8e66ce92104a4d4c)
Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/recipes-connectivity/bluez5')
-rw-r--r-- | meta/recipes-connectivity/bluez5/bluez5.inc | 22 | ||||
-rw-r--r-- | meta/recipes-connectivity/bluez5/bluez5/0001-Allow-using-obexd-without-systemd-in-the-user-sessio.patch | 12 | ||||
-rw-r--r-- | meta/recipes-connectivity/bluez5/bluez5/0001-Makefile.am-Fix-a-race-issue-for-tools.patch | 30 | ||||
-rw-r--r-- | meta/recipes-connectivity/bluez5/bluez5/0001-tools-Fix-build-after-y2038-changes-in-glibc.patch | 68 | ||||
-rw-r--r-- | meta/recipes-connectivity/bluez5/bluez5/0001-tools-btpclient.c-include-signal.h.patch | 30 | ||||
-rw-r--r-- | meta/recipes-connectivity/bluez5/bluez5/CVE-2018-10910.patch | 505 | ||||
-rw-r--r-- | meta/recipes-connectivity/bluez5/bluez5/gcc9-fixes.patch | 301 | ||||
-rw-r--r-- | meta/recipes-connectivity/bluez5/bluez5/out-of-tree.patch | 26 | ||||
-rw-r--r-- | meta/recipes-connectivity/bluez5/bluez5_5.52.bb (renamed from meta/recipes-connectivity/bluez5/bluez5_5.50.bb) | 4 |
9 files changed, 16 insertions, 982 deletions
diff --git a/meta/recipes-connectivity/bluez5/bluez5.inc b/meta/recipes-connectivity/bluez5/bluez5.inc index 484509350b..150d909d73 100644 --- a/meta/recipes-connectivity/bluez5/bluez5.inc +++ b/meta/recipes-connectivity/bluez5/bluez5.inc | |||
@@ -46,20 +46,13 @@ PACKAGECONFIG[mesh] = "--enable-mesh,--disable-mesh, json-c ell" | |||
46 | PACKAGECONFIG[btpclient] = "--enable-btpclient,--disable-btpclient, ell" | 46 | PACKAGECONFIG[btpclient] = "--enable-btpclient,--disable-btpclient, ell" |
47 | PACKAGECONFIG[udev] = "--enable-udev,--disable-udev,udev" | 47 | PACKAGECONFIG[udev] = "--enable-udev,--disable-udev,udev" |
48 | 48 | ||
49 | SRC_URI = "\ | 49 | SRC_URI = "${KERNELORG_MIRROR}/linux/bluetooth/bluez-${PV}.tar.xz \ |
50 | ${KERNELORG_MIRROR}/linux/bluetooth/bluez-${PV}.tar.xz \ | 50 | file://init \ |
51 | file://out-of-tree.patch \ | 51 | file://run-ptest \ |
52 | file://init \ | 52 | ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '', 'file://0001-Allow-using-obexd-without-systemd-in-the-user-sessio.patch', d)} \ |
53 | file://run-ptest \ | 53 | file://0001-tests-add-a-target-for-building-tests-without-runnin.patch \ |
54 | ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '', 'file://0001-Allow-using-obexd-without-systemd-in-the-user-sessio.patch', d)} \ | 54 | file://0001-test-gatt-Fix-hung-issue.patch \ |
55 | file://0001-tests-add-a-target-for-building-tests-without-runnin.patch \ | 55 | " |
56 | file://0001-test-gatt-Fix-hung-issue.patch \ | ||
57 | file://0001-Makefile.am-Fix-a-race-issue-for-tools.patch \ | ||
58 | file://CVE-2018-10910.patch \ | ||
59 | file://gcc9-fixes.patch \ | ||
60 | file://0001-tools-Fix-build-after-y2038-changes-in-glibc.patch \ | ||
61 | file://0001-tools-btpclient.c-include-signal.h.patch \ | ||
62 | " | ||
63 | S = "${WORKDIR}/bluez-${PV}" | 56 | S = "${WORKDIR}/bluez-${PV}" |
64 | 57 | ||
65 | CVE_PRODUCT = "bluez" | 58 | CVE_PRODUCT = "bluez" |
@@ -70,6 +63,7 @@ EXTRA_OECONF = "\ | |||
70 | --enable-test \ | 63 | --enable-test \ |
71 | --enable-datafiles \ | 64 | --enable-datafiles \ |
72 | --enable-library \ | 65 | --enable-library \ |
66 | --without-zsh-completion-dir \ | ||
73 | " | 67 | " |
74 | 68 | ||
75 | # bluez5 builds a large number of useful utilities but does not | 69 | # bluez5 builds a large number of useful utilities but does not |
diff --git a/meta/recipes-connectivity/bluez5/bluez5/0001-Allow-using-obexd-without-systemd-in-the-user-sessio.patch b/meta/recipes-connectivity/bluez5/bluez5/0001-Allow-using-obexd-without-systemd-in-the-user-sessio.patch index da7140922d..618ed734a9 100644 --- a/meta/recipes-connectivity/bluez5/bluez5/0001-Allow-using-obexd-without-systemd-in-the-user-sessio.patch +++ b/meta/recipes-connectivity/bluez5/bluez5/0001-Allow-using-obexd-without-systemd-in-the-user-sessio.patch | |||
@@ -1,4 +1,4 @@ | |||
1 | From 99ccdbe155028c4c789803a429072675b87d0c3a Mon Sep 17 00:00:00 2001 | 1 | From f74eb97c9fb3c0ee2895742e773ac6a3c41c999c Mon Sep 17 00:00:00 2001 |
2 | From: Giovanni Campagna <gcampagna-cNUdlRotFMnNLxjTenLetw@public.gmane.org> | 2 | From: Giovanni Campagna <gcampagna-cNUdlRotFMnNLxjTenLetw@public.gmane.org> |
3 | Date: Sat, 12 Oct 2013 17:45:25 +0200 | 3 | Date: Sat, 12 Oct 2013 17:45:25 +0200 |
4 | Subject: [PATCH] Allow using obexd without systemd in the user session | 4 | Subject: [PATCH] Allow using obexd without systemd in the user session |
@@ -17,22 +17,22 @@ http://thread.gmane.org/gmane.linux.bluez.kernel/38725/focus=38843 | |||
17 | Signed-off-by: Javier Viguera <javier.viguera@digi.com> | 17 | Signed-off-by: Javier Viguera <javier.viguera@digi.com> |
18 | 18 | ||
19 | --- | 19 | --- |
20 | Makefile.obexd | 4 ++-- | 20 | Makefile.obexd | 4 ++-- |
21 | obexd/src/{org.bluez.obex.service => org.bluez.obex.service.in} | 2 +- | 21 | .../src/{org.bluez.obex.service => org.bluez.obex.service.in} | 2 +- |
22 | 2 files changed, 3 insertions(+), 3 deletions(-) | 22 | 2 files changed, 3 insertions(+), 3 deletions(-) |
23 | rename obexd/src/{org.bluez.obex.service => org.bluez.obex.service.in} (76%) | 23 | rename obexd/src/{org.bluez.obex.service => org.bluez.obex.service.in} (76%) |
24 | 24 | ||
25 | diff --git a/Makefile.obexd b/Makefile.obexd | 25 | diff --git a/Makefile.obexd b/Makefile.obexd |
26 | index c462692..0325f66 100644 | 26 | index de59d29..73004a3 100644 |
27 | --- a/Makefile.obexd | 27 | --- a/Makefile.obexd |
28 | +++ b/Makefile.obexd | 28 | +++ b/Makefile.obexd |
29 | @@ -1,12 +1,12 @@ | 29 | @@ -1,12 +1,12 @@ |
30 | if SYSTEMD | 30 | if SYSTEMD |
31 | systemduserunitdir = @SYSTEMD_USERUNITDIR@ | 31 | systemduserunitdir = $(SYSTEMD_USERUNITDIR) |
32 | systemduserunit_DATA = obexd/src/obex.service | 32 | systemduserunit_DATA = obexd/src/obex.service |
33 | +endif | 33 | +endif |
34 | 34 | ||
35 | dbussessionbusdir = @DBUS_SESSIONBUSDIR@ | 35 | dbussessionbusdir = $(DBUS_SESSIONBUSDIR) |
36 | dbussessionbus_DATA = obexd/src/org.bluez.obex.service | 36 | dbussessionbus_DATA = obexd/src/org.bluez.obex.service |
37 | -endif | 37 | -endif |
38 | 38 | ||
diff --git a/meta/recipes-connectivity/bluez5/bluez5/0001-Makefile.am-Fix-a-race-issue-for-tools.patch b/meta/recipes-connectivity/bluez5/bluez5/0001-Makefile.am-Fix-a-race-issue-for-tools.patch deleted file mode 100644 index b6cb978393..0000000000 --- a/meta/recipes-connectivity/bluez5/bluez5/0001-Makefile.am-Fix-a-race-issue-for-tools.patch +++ /dev/null | |||
@@ -1,30 +0,0 @@ | |||
1 | Upstream-Status: Backport | ||
2 | Signed-off-by: Ross Burton <ross.burton@intel.com> | ||
3 | |||
4 | From 117c41242c01e057295aed80ed973c6dc7e35fe2 Mon Sep 17 00:00:00 2001 | ||
5 | From: Ross Burton <ross.burton@intel.com> | ||
6 | Date: Tue, 8 Oct 2019 11:01:56 +0100 | ||
7 | Subject: [PATCH BlueZ] Makefile.am: add missing mkdir in rules generation | ||
8 | |||
9 | In parallel out-of-tree builds it's possible that tools/*.rules are | ||
10 | generated before the target directory has been implicitly created. Solve this by | ||
11 | creating the directory before writing into it. | ||
12 | --- | ||
13 | Makefile.am | 1 + | ||
14 | 1 file changed, 1 insertion(+) | ||
15 | |||
16 | diff --git a/Makefile.am b/Makefile.am | ||
17 | index 2ac28b23d..e7bcd2366 100644 | ||
18 | --- a/Makefile.am | ||
19 | +++ b/Makefile.am | ||
20 | @@ -589,6 +589,7 @@ src/builtin.h: src/genbuiltin $(builtin_sources) | ||
21 | $(AM_V_GEN)$(srcdir)/src/genbuiltin $(builtin_modules) > $@ | ||
22 | |||
23 | tools/%.rules: | ||
24 | + $(AM_V_at)$(MKDIR_P) tools | ||
25 | $(AM_V_GEN)cp $(srcdir)/$(subst 97-,,$@) $@ | ||
26 | |||
27 | $(lib_libbluetooth_la_OBJECTS): $(local_headers) | ||
28 | -- | ||
29 | 2.20.1 | ||
30 | |||
diff --git a/meta/recipes-connectivity/bluez5/bluez5/0001-tools-Fix-build-after-y2038-changes-in-glibc.patch b/meta/recipes-connectivity/bluez5/bluez5/0001-tools-Fix-build-after-y2038-changes-in-glibc.patch deleted file mode 100644 index 9ca20ae53b..0000000000 --- a/meta/recipes-connectivity/bluez5/bluez5/0001-tools-Fix-build-after-y2038-changes-in-glibc.patch +++ /dev/null | |||
@@ -1,68 +0,0 @@ | |||
1 | From f36f71f60b1e68c0f12e615b9b128d089ec3dd19 Mon Sep 17 00:00:00 2001 | ||
2 | From: Bastien Nocera <hadess@hadess.net> | ||
3 | Date: Fri, 7 Jun 2019 09:51:33 +0200 | ||
4 | Subject: [PATCH] tools: Fix build after y2038 changes in glibc | ||
5 | |||
6 | The 32-bit SIOCGSTAMP has been deprecated. Use the deprecated name | ||
7 | to fix the build. | ||
8 | |||
9 | Upstream-Status: backport commit f36f71f60b1e68c0f12e615b9b128d089ec3dd19 | ||
10 | |||
11 | Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com> | ||
12 | |||
13 | --- | ||
14 | tools/l2test.c | 6 +++++- | ||
15 | tools/rctest.c | 6 +++++- | ||
16 | 2 files changed, 10 insertions(+), 2 deletions(-) | ||
17 | |||
18 | diff --git a/tools/l2test.c b/tools/l2test.c | ||
19 | index e755ac881..e787c2ce2 100644 | ||
20 | --- a/tools/l2test.c | ||
21 | +++ b/tools/l2test.c | ||
22 | @@ -55,6 +55,10 @@ | ||
23 | #define BREDR_DEFAULT_PSM 0x1011 | ||
24 | #define LE_DEFAULT_PSM 0x0080 | ||
25 | |||
26 | +#ifndef SIOCGSTAMP_OLD | ||
27 | +#define SIOCGSTAMP_OLD SIOCGSTAMP | ||
28 | +#endif | ||
29 | + | ||
30 | /* Test modes */ | ||
31 | enum { | ||
32 | SEND, | ||
33 | @@ -907,7 +911,7 @@ static void recv_mode(int sk) | ||
34 | if (timestamp) { | ||
35 | struct timeval tv; | ||
36 | |||
37 | - if (ioctl(sk, SIOCGSTAMP, &tv) < 0) { | ||
38 | + if (ioctl(sk, SIOCGSTAMP_OLD, &tv) < 0) { | ||
39 | timestamp = 0; | ||
40 | memset(ts, 0, sizeof(ts)); | ||
41 | } else { | ||
42 | diff --git a/tools/rctest.c b/tools/rctest.c | ||
43 | index 94490f462..bc8ed875d 100644 | ||
44 | --- a/tools/rctest.c | ||
45 | +++ b/tools/rctest.c | ||
46 | @@ -50,6 +50,10 @@ | ||
47 | |||
48 | #include "src/shared/util.h" | ||
49 | |||
50 | +#ifndef SIOCGSTAMP_OLD | ||
51 | +#define SIOCGSTAMP_OLD SIOCGSTAMP | ||
52 | +#endif | ||
53 | + | ||
54 | /* Test modes */ | ||
55 | enum { | ||
56 | SEND, | ||
57 | @@ -505,7 +509,7 @@ static void recv_mode(int sk) | ||
58 | if (timestamp) { | ||
59 | struct timeval tv; | ||
60 | |||
61 | - if (ioctl(sk, SIOCGSTAMP, &tv) < 0) { | ||
62 | + if (ioctl(sk, SIOCGSTAMP_OLD, &tv) < 0) { | ||
63 | timestamp = 0; | ||
64 | memset(ts, 0, sizeof(ts)); | ||
65 | } else { | ||
66 | -- | ||
67 | 2.19.1 | ||
68 | |||
diff --git a/meta/recipes-connectivity/bluez5/bluez5/0001-tools-btpclient.c-include-signal.h.patch b/meta/recipes-connectivity/bluez5/bluez5/0001-tools-btpclient.c-include-signal.h.patch deleted file mode 100644 index 620aaabc68..0000000000 --- a/meta/recipes-connectivity/bluez5/bluez5/0001-tools-btpclient.c-include-signal.h.patch +++ /dev/null | |||
@@ -1,30 +0,0 @@ | |||
1 | From 0b1766514f6847c7367fce07f19a750ec74c11a6 Mon Sep 17 00:00:00 2001 | ||
2 | From: Robert Yang <liezhi.yang@windriver.com> | ||
3 | Date: Thu, 26 Sep 2019 16:19:34 +0800 | ||
4 | Subject: [PATCH] tools/btpclient.c: include signal.h | ||
5 | |||
6 | Fix compile failure when configure --enable-btpclient: | ||
7 | btpclient.c:2834:7: error: 'SIGINT' undeclared (first use in this function) | ||
8 | |||
9 | Upstream-Status: Backport [A subset of the full fix that went upstream] | ||
10 | |||
11 | Signed-off-by: Robert Yang <liezhi.yang@windriver.com> | ||
12 | --- | ||
13 | tools/btpclient.c | 1 + | ||
14 | 1 file changed, 1 insertion(+) | ||
15 | |||
16 | diff --git a/tools/btpclient.c b/tools/btpclient.c | ||
17 | index b217df5..aece7fe 100644 | ||
18 | --- a/tools/btpclient.c | ||
19 | +++ b/tools/btpclient.c | ||
20 | @@ -29,6 +29,7 @@ | ||
21 | #include <stdlib.h> | ||
22 | #include <assert.h> | ||
23 | #include <getopt.h> | ||
24 | +#include <signal.h> | ||
25 | |||
26 | #include <ell/ell.h> | ||
27 | |||
28 | -- | ||
29 | 2.7.4 | ||
30 | |||
diff --git a/meta/recipes-connectivity/bluez5/bluez5/CVE-2018-10910.patch b/meta/recipes-connectivity/bluez5/bluez5/CVE-2018-10910.patch deleted file mode 100644 index 2a78077443..0000000000 --- a/meta/recipes-connectivity/bluez5/bluez5/CVE-2018-10910.patch +++ /dev/null | |||
@@ -1,505 +0,0 @@ | |||
1 | From 977321f2c7f974ea68a3d90df296c66189a3f254 Mon Sep 17 00:00:00 2001 | ||
2 | From: Lei Maohui <leimaohui@cn.fujitsu.com> | ||
3 | Date: Fri, 21 Jun 2019 17:57:35 +0900 | ||
4 | Subject: [PATCH] CVE-2018-10910 | ||
5 | |||
6 | A bug in Bluez may allow for the Bluetooth Discoverable state being set to on | ||
7 | when no Bluetooth agent is registered with the system. This situation could | ||
8 | lead to the unauthorized pairing of certain Bluetooth devices without any | ||
9 | form of authentication. | ||
10 | |||
11 | CVE: CVE-2018-10910 | ||
12 | Upstream-Status: Backport | ||
13 | Signed-off-by: Ross Burton <ross.burton@intel.com> | ||
14 | |||
15 | Subject: [PATCH BlueZ 1/4] client: Add discoverable-timeout command | ||
16 | From: Luiz Augusto von Dentz <luiz.dentz () gmail ! com> | ||
17 | Date: 2018-07-25 10:20:32 | ||
18 | Message-ID: 20180725102035.19439-1-luiz.dentz () gmail ! com | ||
19 | [Download RAW message or body] | ||
20 | |||
21 | From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com> | ||
22 | |||
23 | This adds discoverable-timeout command which can be used to get/set | ||
24 | DiscoverableTimeout property: | ||
25 | |||
26 | [bluetooth]# discoverable-timeout 180 | ||
27 | Changing discoverable-timeout 180 succeeded | ||
28 | --- | ||
29 | client/main.c | 82 +++++++++++++++++++++++++++++++++- | ||
30 | doc/adapter-api.txt | 6 +++ | ||
31 | src/adapter.c | 125 ++++++++++++++++++++++++++++++++++++++++++++++------ | ||
32 | 3 files changed, 198 insertions(+), 15 deletions(-) | ||
33 | |||
34 | diff --git a/client/main.c b/client/main.c | ||
35 | index 87323d8..1a66a3a 100644 | ||
36 | --- a/client/main.c | ||
37 | +++ b/client/main.c | ||
38 | @@ -877,6 +877,7 @@ static void cmd_show(int argc, char *argv[]) | ||
39 | print_property(proxy, "Class"); | ||
40 | print_property(proxy, "Powered"); | ||
41 | print_property(proxy, "Discoverable"); | ||
42 | + print_property(proxy, "DiscoverableTimeout"); | ||
43 | print_property(proxy, "Pairable"); | ||
44 | print_uuids(proxy); | ||
45 | print_property(proxy, "Modalias"); | ||
46 | @@ -1061,6 +1062,47 @@ static void cmd_discoverable(int argc, char *argv[]) | ||
47 | return bt_shell_noninteractive_quit(EXIT_FAILURE); | ||
48 | } | ||
49 | |||
50 | +static void cmd_discoverable_timeout(int argc, char *argv[]) | ||
51 | +{ | ||
52 | + uint32_t value; | ||
53 | + char *endptr = NULL; | ||
54 | + char *str; | ||
55 | + | ||
56 | + if (argc < 2) { | ||
57 | + DBusMessageIter iter; | ||
58 | + | ||
59 | + if (!g_dbus_proxy_get_property(default_ctrl->proxy, | ||
60 | + "DiscoverableTimeout", &iter)) { | ||
61 | + bt_shell_printf("Unable to get DiscoverableTimeout\n"); | ||
62 | + return bt_shell_noninteractive_quit(EXIT_FAILURE); | ||
63 | + } | ||
64 | + | ||
65 | + dbus_message_iter_get_basic(&iter, &value); | ||
66 | + | ||
67 | + bt_shell_printf("DiscoverableTimeout: %d seconds\n", value); | ||
68 | + | ||
69 | + return; | ||
70 | + } | ||
71 | + | ||
72 | + value = strtol(argv[1], &endptr, 0); | ||
73 | + if (!endptr || *endptr != '\0' || value > UINT32_MAX) { | ||
74 | + bt_shell_printf("Invalid argument\n"); | ||
75 | + return bt_shell_noninteractive_quit(EXIT_FAILURE); | ||
76 | + } | ||
77 | + | ||
78 | + str = g_strdup_printf("discoverable-timeout %d", value); | ||
79 | + | ||
80 | + if (g_dbus_proxy_set_property_basic(default_ctrl->proxy, | ||
81 | + "DiscoverableTimeout", | ||
82 | + DBUS_TYPE_UINT32, &value, | ||
83 | + generic_callback, str, g_free)) | ||
84 | + return; | ||
85 | + | ||
86 | + g_free(str); | ||
87 | + | ||
88 | + return bt_shell_noninteractive_quit(EXIT_FAILURE); | ||
89 | +} | ||
90 | + | ||
91 | static void cmd_agent(int argc, char *argv[]) | ||
92 | { | ||
93 | dbus_bool_t enable; | ||
94 | @@ -1124,6 +1166,7 @@ static struct set_discovery_filter_args { | ||
95 | char **uuids; | ||
96 | size_t uuids_len; | ||
97 | dbus_bool_t duplicate; | ||
98 | + dbus_bool_t discoverable; | ||
99 | bool set; | ||
100 | } filter = { | ||
101 | .rssi = DISTANCE_VAL_INVALID, | ||
102 | @@ -1163,6 +1206,11 @@ static void set_discovery_filter_setup(DBusMessageIter *iter, void *user_data) | ||
103 | DBUS_TYPE_BOOLEAN, | ||
104 | &args->duplicate); | ||
105 | |||
106 | + if (args->discoverable) | ||
107 | + g_dbus_dict_append_entry(&dict, "Discoverable", | ||
108 | + DBUS_TYPE_BOOLEAN, | ||
109 | + &args->discoverable); | ||
110 | + | ||
111 | dbus_message_iter_close_container(iter, &dict); | ||
112 | } | ||
113 | |||
114 | @@ -1320,6 +1368,26 @@ static void cmd_scan_filter_duplicate_data(int argc, char *argv[]) | ||
115 | filter.set = false; | ||
116 | } | ||
117 | |||
118 | +static void cmd_scan_filter_discoverable(int argc, char *argv[]) | ||
119 | +{ | ||
120 | + if (argc < 2 || !strlen(argv[1])) { | ||
121 | + bt_shell_printf("Discoverable: %s\n", | ||
122 | + filter.discoverable ? "on" : "off"); | ||
123 | + return bt_shell_noninteractive_quit(EXIT_SUCCESS); | ||
124 | + } | ||
125 | + | ||
126 | + if (!strcmp(argv[1], "on")) | ||
127 | + filter.discoverable = true; | ||
128 | + else if (!strcmp(argv[1], "off")) | ||
129 | + filter.discoverable = false; | ||
130 | + else { | ||
131 | + bt_shell_printf("Invalid option: %s\n", argv[1]); | ||
132 | + return bt_shell_noninteractive_quit(EXIT_FAILURE); | ||
133 | + } | ||
134 | + | ||
135 | + filter.set = false; | ||
136 | +} | ||
137 | + | ||
138 | static void filter_clear_uuids(void) | ||
139 | { | ||
140 | g_strfreev(filter.uuids); | ||
141 | @@ -1348,6 +1416,11 @@ static void filter_clear_duplicate(void) | ||
142 | filter.duplicate = false; | ||
143 | } | ||
144 | |||
145 | +static void filter_clear_discoverable(void) | ||
146 | +{ | ||
147 | + filter.discoverable = false; | ||
148 | +} | ||
149 | + | ||
150 | struct clear_entry { | ||
151 | const char *name; | ||
152 | void (*clear) (void); | ||
153 | @@ -1359,6 +1432,7 @@ static const struct clear_entry filter_clear[] = { | ||
154 | { "pathloss", filter_clear_pathloss }, | ||
155 | { "transport", filter_clear_transport }, | ||
156 | { "duplicate-data", filter_clear_duplicate }, | ||
157 | + { "discoverable", filter_clear_discoverable }, | ||
158 | {} | ||
159 | }; | ||
160 | |||
161 | @@ -2468,7 +2542,11 @@ static const struct bt_shell_menu scan_menu = { | ||
162 | { "duplicate-data", "[on/off]", cmd_scan_filter_duplicate_data, | ||
163 | "Set/Get duplicate data filter", | ||
164 | NULL }, | ||
165 | - { "clear", "[uuids/rssi/pathloss/transport/duplicate-data]", | ||
166 | + { "discoverable", "[on/off]", cmd_scan_filter_discoverable, | ||
167 | + "Set/Get discoverable filter", | ||
168 | + NULL }, | ||
169 | + { "clear", | ||
170 | + "[uuids/rssi/pathloss/transport/duplicate-data/discoverable]", | ||
171 | cmd_scan_filter_clear, | ||
172 | "Clears discovery filter.", | ||
173 | filter_clear_generator }, | ||
174 | @@ -2549,6 +2627,8 @@ static const struct bt_shell_menu main_menu = { | ||
175 | { "discoverable", "<on/off>", cmd_discoverable, | ||
176 | "Set controller discoverable mode", | ||
177 | NULL }, | ||
178 | + { "discoverable-timeout", "[value]", cmd_discoverable_timeout, | ||
179 | + "Set discoverable timeout", NULL }, | ||
180 | { "agent", "<on/off/capability>", cmd_agent, | ||
181 | "Enable/disable agent with given capability", | ||
182 | capability_generator}, | ||
183 | diff --git a/doc/adapter-api.txt b/doc/adapter-api.txt | ||
184 | index d14d0ca..4791af2 100644 | ||
185 | --- a/doc/adapter-api.txt | ||
186 | +++ b/doc/adapter-api.txt | ||
187 | @@ -113,6 +113,12 @@ Methods void StartDiscovery() | ||
188 | generated for either ManufacturerData and | ||
189 | ServiceData everytime they are discovered. | ||
190 | |||
191 | + bool Discoverable (Default: false) | ||
192 | + | ||
193 | + Make adapter discoverable while discovering, | ||
194 | + if the adapter is already discoverable this | ||
195 | + setting this filter won't do anything. | ||
196 | + | ||
197 | When discovery filter is set, Device objects will be | ||
198 | created as new devices with matching criteria are | ||
199 | discovered regardless of they are connectable or | ||
200 | diff --git a/src/adapter.c b/src/adapter.c | ||
201 | index af340fd..822bd34 100644 | ||
202 | --- a/src/adapter.c | ||
203 | +++ b/src/adapter.c | ||
204 | @@ -157,6 +157,7 @@ struct discovery_filter { | ||
205 | int16_t rssi; | ||
206 | GSList *uuids; | ||
207 | bool duplicate; | ||
208 | + bool discoverable; | ||
209 | }; | ||
210 | |||
211 | struct watch_client { | ||
212 | @@ -196,6 +197,7 @@ struct btd_adapter { | ||
213 | char *name; /* controller device name */ | ||
214 | char *short_name; /* controller short name */ | ||
215 | uint32_t supported_settings; /* controller supported settings */ | ||
216 | + uint32_t pending_settings; /* pending controller settings */ | ||
217 | uint32_t current_settings; /* current controller settings */ | ||
218 | |||
219 | char *path; /* adapter object path */ | ||
220 | @@ -213,6 +215,7 @@ struct btd_adapter { | ||
221 | |||
222 | bool discovering; /* discovering property state */ | ||
223 | bool filtered_discovery; /* we are doing filtered discovery */ | ||
224 | + bool filtered_discoverable; /* we are doing filtered discovery */ | ||
225 | bool no_scan_restart_delay; /* when this flag is set, restart scan | ||
226 | * without delay */ | ||
227 | uint8_t discovery_type; /* current active discovery type */ | ||
228 | @@ -509,8 +512,10 @@ static void settings_changed(struct btd_adapter *adapter, uint32_t settings) | ||
229 | changed_mask = adapter->current_settings ^ settings; | ||
230 | |||
231 | adapter->current_settings = settings; | ||
232 | + adapter->pending_settings &= ~changed_mask; | ||
233 | |||
234 | DBG("Changed settings: 0x%08x", changed_mask); | ||
235 | + DBG("Pending settings: 0x%08x", adapter->pending_settings); | ||
236 | |||
237 | if (changed_mask & MGMT_SETTING_POWERED) { | ||
238 | g_dbus_emit_property_changed(dbus_conn, adapter->path, | ||
239 | @@ -596,10 +601,31 @@ static bool set_mode(struct btd_adapter *adapter, uint16_t opcode, | ||
240 | uint8_t mode) | ||
241 | { | ||
242 | struct mgmt_mode cp; | ||
243 | + uint32_t setting = 0; | ||
244 | |||
245 | memset(&cp, 0, sizeof(cp)); | ||
246 | cp.val = mode; | ||
247 | |||
248 | + switch (mode) { | ||
249 | + case MGMT_OP_SET_POWERED: | ||
250 | + setting = MGMT_SETTING_POWERED; | ||
251 | + break; | ||
252 | + case MGMT_OP_SET_CONNECTABLE: | ||
253 | + setting = MGMT_SETTING_CONNECTABLE; | ||
254 | + break; | ||
255 | + case MGMT_OP_SET_FAST_CONNECTABLE: | ||
256 | + setting = MGMT_SETTING_FAST_CONNECTABLE; | ||
257 | + break; | ||
258 | + case MGMT_OP_SET_DISCOVERABLE: | ||
259 | + setting = MGMT_SETTING_DISCOVERABLE; | ||
260 | + break; | ||
261 | + case MGMT_OP_SET_BONDABLE: | ||
262 | + setting = MGMT_SETTING_DISCOVERABLE; | ||
263 | + break; | ||
264 | + } | ||
265 | + | ||
266 | + adapter->pending_settings |= setting; | ||
267 | + | ||
268 | DBG("sending set mode command for index %u", adapter->dev_id); | ||
269 | |||
270 | if (mgmt_send(adapter->mgmt, opcode, | ||
271 | @@ -1818,7 +1844,17 @@ static void discovery_free(void *user_data) | ||
272 | g_free(client); | ||
273 | } | ||
274 | |||
275 | -static void discovery_remove(struct watch_client *client) | ||
276 | +static bool set_filtered_discoverable(struct btd_adapter *adapter, bool enable) | ||
277 | +{ | ||
278 | + if (adapter->filtered_discoverable == enable) | ||
279 | + return true; | ||
280 | + | ||
281 | + adapter->filtered_discoverable = enable; | ||
282 | + | ||
283 | + return set_discoverable(adapter, enable, 0); | ||
284 | +} | ||
285 | + | ||
286 | +static void discovery_remove(struct watch_client *client, bool exit) | ||
287 | { | ||
288 | struct btd_adapter *adapter = client->adapter; | ||
289 | |||
290 | @@ -1830,7 +1866,27 @@ static void discovery_remove(struct watch_client *client) | ||
291 | adapter->discovery_list = g_slist_remove(adapter->discovery_list, | ||
292 | client); | ||
293 | |||
294 | - discovery_free(client); | ||
295 | + if (adapter->filtered_discoverable && | ||
296 | + client->discovery_filter->discoverable) { | ||
297 | + GSList *l; | ||
298 | + | ||
299 | + for (l = adapter->discovery_list; l; l = g_slist_next(l)) { | ||
300 | + struct watch_client *client = l->data; | ||
301 | + | ||
302 | + if (client->discovery_filter->discoverable) | ||
303 | + break; | ||
304 | + } | ||
305 | + | ||
306 | + /* Disable filtered discoverable if there are no clients */ | ||
307 | + if (!l) | ||
308 | + set_filtered_discoverable(adapter, false); | ||
309 | + } | ||
310 | + | ||
311 | + if (!exit && client->discovery_filter) | ||
312 | + adapter->set_filter_list = g_slist_prepend( | ||
313 | + adapter->set_filter_list, client); | ||
314 | + else | ||
315 | + discovery_free(client); | ||
316 | |||
317 | /* | ||
318 | * If there are other client discoveries in progress, then leave | ||
319 | @@ -1859,8 +1915,11 @@ static void stop_discovery_complete(uint8_t status, uint16_t length, | ||
320 | goto done; | ||
321 | } | ||
322 | |||
323 | - if (client->msg) | ||
324 | + if (client->msg) { | ||
325 | g_dbus_send_reply(dbus_conn, client->msg, DBUS_TYPE_INVALID); | ||
326 | + dbus_message_unref(client->msg); | ||
327 | + client->msg = NULL; | ||
328 | + } | ||
329 | |||
330 | adapter->discovery_type = 0x00; | ||
331 | adapter->discovery_enable = 0x00; | ||
332 | @@ -1873,7 +1932,7 @@ static void stop_discovery_complete(uint8_t status, uint16_t length, | ||
333 | trigger_passive_scanning(adapter); | ||
334 | |||
335 | done: | ||
336 | - discovery_remove(client); | ||
337 | + discovery_remove(client, false); | ||
338 | } | ||
339 | |||
340 | static int compare_sender(gconstpointer a, gconstpointer b) | ||
341 | @@ -2094,14 +2153,14 @@ static int update_discovery_filter(struct btd_adapter *adapter) | ||
342 | return -EINPROGRESS; | ||
343 | } | ||
344 | |||
345 | -static int discovery_stop(struct watch_client *client) | ||
346 | +static int discovery_stop(struct watch_client *client, bool exit) | ||
347 | { | ||
348 | struct btd_adapter *adapter = client->adapter; | ||
349 | struct mgmt_cp_stop_discovery cp; | ||
350 | |||
351 | /* Check if there are more client discovering */ | ||
352 | if (g_slist_next(adapter->discovery_list)) { | ||
353 | - discovery_remove(client); | ||
354 | + discovery_remove(client, exit); | ||
355 | update_discovery_filter(adapter); | ||
356 | return 0; | ||
357 | } | ||
358 | @@ -2111,7 +2170,7 @@ static int discovery_stop(struct watch_client *client) | ||
359 | * and so it is enough to send out the signal and just return. | ||
360 | */ | ||
361 | if (adapter->discovery_enable == 0x00) { | ||
362 | - discovery_remove(client); | ||
363 | + discovery_remove(client, exit); | ||
364 | adapter->discovering = false; | ||
365 | g_dbus_emit_property_changed(dbus_conn, adapter->path, | ||
366 | ADAPTER_INTERFACE, "Discovering"); | ||
367 | @@ -2136,7 +2195,7 @@ static void discovery_disconnect(DBusConnection *conn, void *user_data) | ||
368 | |||
369 | DBG("owner %s", client->owner); | ||
370 | |||
371 | - discovery_stop(client); | ||
372 | + discovery_stop(client, true); | ||
373 | } | ||
374 | |||
375 | /* | ||
376 | @@ -2200,6 +2259,15 @@ static DBusMessage *start_discovery(DBusConnection *conn, | ||
377 | adapter->set_filter_list, client); | ||
378 | adapter->discovery_list = g_slist_prepend( | ||
379 | adapter->discovery_list, client); | ||
380 | + | ||
381 | + /* Reset discoverable filter if already set */ | ||
382 | + if (adapter->current_settings & MGMT_OP_SET_DISCOVERABLE) | ||
383 | + goto done; | ||
384 | + | ||
385 | + /* Set discoverable if filter requires and it*/ | ||
386 | + if (client->discovery_filter->discoverable) | ||
387 | + set_filtered_discoverable(adapter, true); | ||
388 | + | ||
389 | goto done; | ||
390 | } | ||
391 | |||
392 | @@ -2324,6 +2392,17 @@ static bool parse_duplicate_data(DBusMessageIter *value, | ||
393 | return true; | ||
394 | } | ||
395 | |||
396 | +static bool parse_discoverable(DBusMessageIter *value, | ||
397 | + struct discovery_filter *filter) | ||
398 | +{ | ||
399 | + if (dbus_message_iter_get_arg_type(value) != DBUS_TYPE_BOOLEAN) | ||
400 | + return false; | ||
401 | + | ||
402 | + dbus_message_iter_get_basic(value, &filter->discoverable); | ||
403 | + | ||
404 | + return true; | ||
405 | +} | ||
406 | + | ||
407 | struct filter_parser { | ||
408 | const char *name; | ||
409 | bool (*func)(DBusMessageIter *iter, struct discovery_filter *filter); | ||
410 | @@ -2333,6 +2412,7 @@ struct filter_parser { | ||
411 | { "Pathloss", parse_pathloss }, | ||
412 | { "Transport", parse_transport }, | ||
413 | { "DuplicateData", parse_duplicate_data }, | ||
414 | + { "Discoverable", parse_discoverable }, | ||
415 | { } | ||
416 | }; | ||
417 | |||
418 | @@ -2372,6 +2452,7 @@ static bool parse_discovery_filter_dict(struct btd_adapter *adapter, | ||
419 | (*filter)->rssi = DISTANCE_VAL_INVALID; | ||
420 | (*filter)->type = get_scan_type(adapter); | ||
421 | (*filter)->duplicate = false; | ||
422 | + (*filter)->discoverable = false; | ||
423 | |||
424 | dbus_message_iter_init(msg, &iter); | ||
425 | if (dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_ARRAY || | ||
426 | @@ -2417,8 +2498,10 @@ static bool parse_discovery_filter_dict(struct btd_adapter *adapter, | ||
427 | goto invalid_args; | ||
428 | |||
429 | DBG("filtered discovery params: transport: %d rssi: %d pathloss: %d " | ||
430 | - " duplicate data: %s ", (*filter)->type, (*filter)->rssi, | ||
431 | - (*filter)->pathloss, (*filter)->duplicate ? "true" : "false"); | ||
432 | + " duplicate data: %s discoverable %s", (*filter)->type, | ||
433 | + (*filter)->rssi, (*filter)->pathloss, | ||
434 | + (*filter)->duplicate ? "true" : "false", | ||
435 | + (*filter)->discoverable ? "true" : "false"); | ||
436 | |||
437 | return true; | ||
438 | |||
439 | @@ -2510,7 +2593,7 @@ static DBusMessage *stop_discovery(DBusConnection *conn, | ||
440 | if (client->msg) | ||
441 | return btd_error_busy(msg); | ||
442 | |||
443 | - err = discovery_stop(client); | ||
444 | + err = discovery_stop(client, false); | ||
445 | switch (err) { | ||
446 | case 0: | ||
447 | return dbus_message_new_method_return(msg); | ||
448 | @@ -2739,13 +2822,15 @@ static void property_set_mode(struct btd_adapter *adapter, uint32_t setting, | ||
449 | else | ||
450 | current_enable = FALSE; | ||
451 | |||
452 | - if (enable == current_enable) { | ||
453 | + if (enable == current_enable || adapter->pending_settings & setting) { | ||
454 | g_dbus_pending_property_success(id); | ||
455 | return; | ||
456 | } | ||
457 | |||
458 | mode = (enable == TRUE) ? 0x01 : 0x00; | ||
459 | |||
460 | + adapter->pending_settings |= setting; | ||
461 | + | ||
462 | switch (setting) { | ||
463 | case MGMT_SETTING_POWERED: | ||
464 | opcode = MGMT_OP_SET_POWERED; | ||
465 | @@ -2798,7 +2883,7 @@ static void property_set_mode(struct btd_adapter *adapter, uint32_t setting, | ||
466 | data->id = id; | ||
467 | |||
468 | if (mgmt_send(adapter->mgmt, opcode, adapter->dev_id, len, param, | ||
469 | - property_set_mode_complete, data, g_free) > 0) | ||
470 | + property_set_mode_complete, data, g_free) > 0) | ||
471 | return; | ||
472 | |||
473 | g_free(data); | ||
474 | @@ -2875,6 +2960,7 @@ static void property_set_discoverable_timeout( | ||
475 | GDBusPendingPropertySet id, void *user_data) | ||
476 | { | ||
477 | struct btd_adapter *adapter = user_data; | ||
478 | + bool enabled; | ||
479 | dbus_uint32_t value; | ||
480 | |||
481 | dbus_message_iter_get_basic(iter, &value); | ||
482 | @@ -2888,8 +2974,19 @@ static void property_set_discoverable_timeout( | ||
483 | g_dbus_emit_property_changed(dbus_conn, adapter->path, | ||
484 | ADAPTER_INTERFACE, "DiscoverableTimeout"); | ||
485 | |||
486 | + if (adapter->pending_settings & MGMT_SETTING_DISCOVERABLE) { | ||
487 | + if (adapter->current_settings & MGMT_SETTING_DISCOVERABLE) | ||
488 | + enabled = false; | ||
489 | + else | ||
490 | + enabled = true; | ||
491 | + } else { | ||
492 | + if (adapter->current_settings & MGMT_SETTING_DISCOVERABLE) | ||
493 | + enabled = true; | ||
494 | + else | ||
495 | + enabled = false; | ||
496 | + } | ||
497 | |||
498 | - if (adapter->current_settings & MGMT_SETTING_DISCOVERABLE) | ||
499 | + if (enabled) | ||
500 | set_discoverable(adapter, 0x01, adapter->discoverable_timeout); | ||
501 | } | ||
502 | |||
503 | -- | ||
504 | 2.7.4 | ||
505 | |||
diff --git a/meta/recipes-connectivity/bluez5/bluez5/gcc9-fixes.patch b/meta/recipes-connectivity/bluez5/bluez5/gcc9-fixes.patch deleted file mode 100644 index ca678e601e..0000000000 --- a/meta/recipes-connectivity/bluez5/bluez5/gcc9-fixes.patch +++ /dev/null | |||
@@ -1,301 +0,0 @@ | |||
1 | Backported commit from upstream master branch (post 5.50 release), which | ||
2 | resolves assertion failures in several unit tests. | ||
3 | |||
4 | https://git.kernel.org/pub/scm/bluetooth/bluez.git/patch/?id=0be5246170 | ||
5 | |||
6 | Upstream-Status: Backport | ||
7 | Signed-off-by: Ross Burton <ross.burton@intel.com> | ||
8 | |||
9 | diff --git a/unit/test-avctp.c b/unit/test-avctp.c | ||
10 | index 3bc3569..24de663 100644 | ||
11 | --- a/unit/test-avctp.c | ||
12 | +++ b/unit/test-avctp.c | ||
13 | @@ -43,7 +43,7 @@ | ||
14 | |||
15 | struct test_pdu { | ||
16 | bool valid; | ||
17 | - const uint8_t *data; | ||
18 | + uint8_t *data; | ||
19 | size_t size; | ||
20 | }; | ||
21 | |||
22 | @@ -66,7 +66,7 @@ struct context { | ||
23 | #define raw_pdu(args...) \ | ||
24 | { \ | ||
25 | .valid = true, \ | ||
26 | - .data = data(args), \ | ||
27 | + .data = g_memdup(data(args), sizeof(data(args))), \ | ||
28 | .size = sizeof(data(args)), \ | ||
29 | } | ||
30 | |||
31 | @@ -91,6 +91,11 @@ static void test_debug(const char *str, void *user_data) | ||
32 | static void test_free(gconstpointer user_data) | ||
33 | { | ||
34 | const struct test_data *data = user_data; | ||
35 | + struct test_pdu *pdu; | ||
36 | + int i; | ||
37 | + | ||
38 | + for (i = 0; (pdu = &data->pdu_list[i]) && pdu->valid; i++) | ||
39 | + g_free(pdu->data); | ||
40 | |||
41 | g_free(data->test_name); | ||
42 | g_free(data->pdu_list); | ||
43 | diff --git a/unit/test-avdtp.c b/unit/test-avdtp.c | ||
44 | index dd8aed7..e2c951a 100644 | ||
45 | --- a/unit/test-avdtp.c | ||
46 | +++ b/unit/test-avdtp.c | ||
47 | @@ -47,7 +47,7 @@ | ||
48 | struct test_pdu { | ||
49 | bool valid; | ||
50 | bool fragmented; | ||
51 | - const uint8_t *data; | ||
52 | + uint8_t *data; | ||
53 | size_t size; | ||
54 | }; | ||
55 | |||
56 | @@ -61,7 +61,7 @@ struct test_data { | ||
57 | #define raw_pdu(args...) \ | ||
58 | { \ | ||
59 | .valid = true, \ | ||
60 | - .data = data(args), \ | ||
61 | + .data = g_memdup(data(args), sizeof(data(args))), \ | ||
62 | .size = sizeof(data(args)), \ | ||
63 | } | ||
64 | |||
65 | @@ -69,7 +69,7 @@ struct test_data { | ||
66 | { \ | ||
67 | .valid = true, \ | ||
68 | .fragmented = true, \ | ||
69 | - .data = data(args), \ | ||
70 | + .data = g_memdup(data(args), sizeof(data(args))), \ | ||
71 | .size = sizeof(data(args)), \ | ||
72 | } | ||
73 | |||
74 | @@ -81,7 +81,7 @@ struct test_data { | ||
75 | static struct test_data data; \ | ||
76 | data.test_name = g_strdup(name); \ | ||
77 | data.pdu_list = g_memdup(pdus, sizeof(pdus)); \ | ||
78 | - tester_add(name, &data, NULL, function, NULL); \ | ||
79 | + tester_add(name, &data, NULL, function, NULL); \ | ||
80 | } while (0) | ||
81 | |||
82 | struct context { | ||
83 | @@ -109,6 +109,11 @@ static void test_debug(const char *str, void *user_data) | ||
84 | static void test_free(gconstpointer user_data) | ||
85 | { | ||
86 | const struct test_data *data = user_data; | ||
87 | + struct test_pdu *pdu; | ||
88 | + int i; | ||
89 | + | ||
90 | + for (i = 0; (pdu = &data->pdu_list[i]) && pdu->valid; i++) | ||
91 | + g_free(pdu->data); | ||
92 | |||
93 | g_free(data->test_name); | ||
94 | g_free(data->pdu_list); | ||
95 | diff --git a/unit/test-avrcp.c b/unit/test-avrcp.c | ||
96 | index 01307e6..f1aa353 100644 | ||
97 | --- a/unit/test-avrcp.c | ||
98 | +++ b/unit/test-avrcp.c | ||
99 | @@ -49,7 +49,7 @@ struct test_pdu { | ||
100 | bool fragmented; | ||
101 | bool continuing; | ||
102 | bool browse; | ||
103 | - const uint8_t *data; | ||
104 | + uint8_t *data; | ||
105 | size_t size; | ||
106 | }; | ||
107 | |||
108 | @@ -74,7 +74,7 @@ struct context { | ||
109 | #define raw_pdu(args...) \ | ||
110 | { \ | ||
111 | .valid = true, \ | ||
112 | - .data = data(args), \ | ||
113 | + .data = g_memdup(data(args), sizeof(data(args))), \ | ||
114 | .size = sizeof(data(args)), \ | ||
115 | } | ||
116 | |||
117 | @@ -82,7 +82,7 @@ struct context { | ||
118 | { \ | ||
119 | .valid = true, \ | ||
120 | .browse = true, \ | ||
121 | - .data = data(args), \ | ||
122 | + .data = g_memdup(data(args), sizeof(data(args))), \ | ||
123 | .size = sizeof(data(args)), \ | ||
124 | } | ||
125 | |||
126 | @@ -90,7 +90,7 @@ struct context { | ||
127 | { \ | ||
128 | .valid = true, \ | ||
129 | .fragmented = true, \ | ||
130 | - .data = data(args), \ | ||
131 | + .data = g_memdup(data(args), sizeof(data(args))), \ | ||
132 | .size = sizeof(data(args)), \ | ||
133 | } | ||
134 | |||
135 | @@ -98,7 +98,7 @@ struct context { | ||
136 | { \ | ||
137 | .valid = true, \ | ||
138 | .continuing = true, \ | ||
139 | - .data = data(args), \ | ||
140 | + .data = g_memdup(data(args), sizeof(data(args))), \ | ||
141 | .size = sizeof(data(args)), \ | ||
142 | } | ||
143 | |||
144 | @@ -123,6 +123,11 @@ static void test_debug(const char *str, void *user_data) | ||
145 | static void test_free(gconstpointer user_data) | ||
146 | { | ||
147 | const struct test_data *data = user_data; | ||
148 | + struct test_pdu *pdu; | ||
149 | + int i; | ||
150 | + | ||
151 | + for (i = 0; (pdu = &data->pdu_list[i]) && pdu->valid; i++) | ||
152 | + g_free(pdu->data); | ||
153 | |||
154 | g_free(data->test_name); | ||
155 | g_free(data->pdu_list); | ||
156 | diff --git a/unit/test-gatt.c b/unit/test-gatt.c | ||
157 | index c7e28f8..d49f7a0 100644 | ||
158 | --- a/unit/test-gatt.c | ||
159 | +++ b/unit/test-gatt.c | ||
160 | @@ -48,7 +48,7 @@ | ||
161 | |||
162 | struct test_pdu { | ||
163 | bool valid; | ||
164 | - const uint8_t *data; | ||
165 | + uint8_t *data; | ||
166 | size_t size; | ||
167 | }; | ||
168 | |||
169 | @@ -86,7 +86,7 @@ struct context { | ||
170 | #define raw_pdu(args...) \ | ||
171 | { \ | ||
172 | .valid = true, \ | ||
173 | - .data = data(args), \ | ||
174 | + .data = g_memdup(data(args), sizeof(data(args))), \ | ||
175 | .size = sizeof(data(args)), \ | ||
176 | } | ||
177 | |||
178 | @@ -306,6 +306,11 @@ static bt_uuid_t uuid_char_128 = { | ||
179 | static void test_free(gconstpointer user_data) | ||
180 | { | ||
181 | const struct test_data *data = user_data; | ||
182 | + struct test_pdu *pdu; | ||
183 | + int i; | ||
184 | + | ||
185 | + for (i = 0; (pdu = &data->pdu_list[i]) && pdu->valid; i++) | ||
186 | + g_free(pdu->data); | ||
187 | |||
188 | g_free(data->test_name); | ||
189 | g_free(data->pdu_list); | ||
190 | @@ -1911,6 +1916,8 @@ static void test_server(gconstpointer data) | ||
191 | g_assert_cmpint(len, ==, pdu.size); | ||
192 | |||
193 | util_hexdump('<', pdu.data, len, test_debug, "GATT: "); | ||
194 | + | ||
195 | + g_free(pdu.data); | ||
196 | } | ||
197 | |||
198 | static void test_search_primary(gconstpointer data) | ||
199 | diff --git a/unit/test-hfp.c b/unit/test-hfp.c | ||
200 | index f2b9622..890eee6 100644 | ||
201 | --- a/unit/test-hfp.c | ||
202 | +++ b/unit/test-hfp.c | ||
203 | @@ -43,7 +43,7 @@ struct context { | ||
204 | |||
205 | struct test_pdu { | ||
206 | bool valid; | ||
207 | - const uint8_t *data; | ||
208 | + uint8_t *data; | ||
209 | size_t size; | ||
210 | enum hfp_gw_cmd_type type; | ||
211 | bool fragmented; | ||
212 | @@ -63,7 +63,7 @@ struct test_data { | ||
213 | #define raw_pdu(args...) \ | ||
214 | { \ | ||
215 | .valid = true, \ | ||
216 | - .data = data(args), \ | ||
217 | + .data = g_memdup(data(args), sizeof(data(args))), \ | ||
218 | .size = sizeof(data(args)), \ | ||
219 | } | ||
220 | |||
221 | @@ -75,7 +75,7 @@ struct test_data { | ||
222 | #define type_pdu(cmd_type, args...) \ | ||
223 | { \ | ||
224 | .valid = true, \ | ||
225 | - .data = data(args), \ | ||
226 | + .data = g_memdup(data(args), sizeof(data(args))), \ | ||
227 | .size = sizeof(data(args)), \ | ||
228 | .type = cmd_type, \ | ||
229 | } | ||
230 | @@ -83,7 +83,7 @@ struct test_data { | ||
231 | #define frg_pdu(args...) \ | ||
232 | { \ | ||
233 | .valid = true, \ | ||
234 | - .data = data(args), \ | ||
235 | + .data = g_memdup(data(args), sizeof(data(args))), \ | ||
236 | .size = sizeof(data(args)), \ | ||
237 | .fragmented = true, \ | ||
238 | } | ||
239 | @@ -119,6 +119,11 @@ struct test_data { | ||
240 | static void test_free(gconstpointer user_data) | ||
241 | { | ||
242 | const struct test_data *data = user_data; | ||
243 | + struct test_pdu *pdu; | ||
244 | + int i; | ||
245 | + | ||
246 | + for (i = 0; (pdu = &data->pdu_list[i]) && pdu->valid; i++) | ||
247 | + g_free(pdu->data); | ||
248 | |||
249 | g_free(data->test_name); | ||
250 | g_free(data->pdu_list); | ||
251 | diff --git a/unit/test-hog.c b/unit/test-hog.c | ||
252 | index d117968..25bdb42 100644 | ||
253 | --- a/unit/test-hog.c | ||
254 | +++ b/unit/test-hog.c | ||
255 | @@ -68,11 +68,11 @@ struct context { | ||
256 | |||
257 | #define data(args...) ((const unsigned char[]) { args }) | ||
258 | |||
259 | -#define raw_pdu(args...) \ | ||
260 | -{ \ | ||
261 | - .valid = true, \ | ||
262 | - .data = data(args), \ | ||
263 | - .size = sizeof(data(args)),\ | ||
264 | +#define raw_pdu(args...) \ | ||
265 | +{ \ | ||
266 | + .valid = true, \ | ||
267 | + .data = g_memdup(data(args), sizeof(data(args))), \ | ||
268 | + .size = sizeof(data(args)), \ | ||
269 | } | ||
270 | |||
271 | #define false_pdu() \ | ||
272 | diff --git a/unit/test-sdp.c b/unit/test-sdp.c | ||
273 | index ac921a9..c71ee1f 100644 | ||
274 | --- a/unit/test-sdp.c | ||
275 | +++ b/unit/test-sdp.c | ||
276 | @@ -59,14 +59,14 @@ struct test_data { | ||
277 | #define raw_pdu(args...) \ | ||
278 | { \ | ||
279 | .valid = true, \ | ||
280 | - .raw_data = raw_data(args), \ | ||
281 | + .raw_data = g_memdup(raw_data(args), sizeof(raw_data(args))), \ | ||
282 | .raw_size = sizeof(raw_data(args)), \ | ||
283 | } | ||
284 | |||
285 | #define raw_pdu_cont(cont, args...) \ | ||
286 | { \ | ||
287 | .valid = true, \ | ||
288 | - .raw_data = raw_data(args), \ | ||
289 | + .raw_data = g_memdup(raw_data(args), sizeof(raw_data(args))), \ | ||
290 | .raw_size = sizeof(raw_data(args)), \ | ||
291 | .cont_len = cont, \ | ||
292 | } | ||
293 | @@ -103,7 +103,7 @@ struct test_data_de { | ||
294 | #define define_test_de_attr(name, input, exp) \ | ||
295 | do { \ | ||
296 | static struct test_data_de data; \ | ||
297 | - data.input_data = input; \ | ||
298 | + data.input_data = g_memdup(input, sizeof(input)); \ | ||
299 | data.input_size = sizeof(input); \ | ||
300 | data.expected = exp; \ | ||
301 | tester_add("/sdp/DE/ATTR/" name, &data, NULL, \ | ||
diff --git a/meta/recipes-connectivity/bluez5/bluez5/out-of-tree.patch b/meta/recipes-connectivity/bluez5/bluez5/out-of-tree.patch deleted file mode 100644 index 76ed779258..0000000000 --- a/meta/recipes-connectivity/bluez5/bluez5/out-of-tree.patch +++ /dev/null | |||
@@ -1,26 +0,0 @@ | |||
1 | From ed55b49a226ca3909f52416be2ae5ce1c5ca2cb2 Mon Sep 17 00:00:00 2001 | ||
2 | From: Ross Burton <ross.burton@intel.com> | ||
3 | Date: Fri, 22 Apr 2016 15:40:37 +0100 | ||
4 | Subject: [PATCH] Makefile.obexd: add missing mkdir in builtin.h generation | ||
5 | |||
6 | In parallel out-of-tree builds it's possible that obexd/src/builtin.h is | ||
7 | generated before the target directory has been implicitly created. Solve this by | ||
8 | creating the directory before writing into it. | ||
9 | |||
10 | Upstream-Status: Backport | ||
11 | Signed-off-by: Ross Burton <ross.burton@intel.com> | ||
12 | --- | ||
13 | Makefile.obexd | 1 + | ||
14 | 1 file changed, 1 insertion(+) | ||
15 | |||
16 | diff --git a/Makefile.obexd b/Makefile.obexd | ||
17 | index 2e33cbc..c8286f0 100644 | ||
18 | --- a/Makefile.obexd | ||
19 | +++ b/Makefile.obexd | ||
20 | @@ -105,2 +105,3 @@ obexd/src/plugin.$(OBJEXT): obexd/src/builtin.h | ||
21 | obexd/src/builtin.h: obexd/src/genbuiltin $(obexd_builtin_sources) | ||
22 | + $(AM_V_at)$(MKDIR_P) $(dir $@) | ||
23 | $(AM_V_GEN)$(srcdir)/obexd/src/genbuiltin $(obexd_builtin_modules) > $@ | ||
24 | -- | ||
25 | 2.8.0.rc3 | ||
26 | |||
diff --git a/meta/recipes-connectivity/bluez5/bluez5_5.50.bb b/meta/recipes-connectivity/bluez5/bluez5_5.52.bb index 4e443e5fb0..b86103014b 100644 --- a/meta/recipes-connectivity/bluez5/bluez5_5.50.bb +++ b/meta/recipes-connectivity/bluez5/bluez5_5.52.bb | |||
@@ -1,7 +1,7 @@ | |||
1 | require bluez5.inc | 1 | require bluez5.inc |
2 | 2 | ||
3 | SRC_URI[md5sum] = "8e35c67c81a55d3ad4c9f22280dae178" | 3 | SRC_URI[md5sum] = "a33eb9aadf1dd4153420958709d3ce60" |
4 | SRC_URI[sha256sum] = "5ffcaae18bbb6155f1591be8c24898dc12f062075a40b538b745bfd477481911" | 4 | SRC_URI[sha256sum] = "f7144ce2039202cfac18ccb52426efea11c98e4f6e1bb8041bcb994b8378560a" |
5 | 5 | ||
6 | # noinst programs in Makefile.tools that are conditional on READLINE | 6 | # noinst programs in Makefile.tools that are conditional on READLINE |
7 | # support | 7 | # support |