neard: cancel empty record processing on tag detection 59/20259/2
authorraquel medina <raquel.medina@konsulko.com>
Tue, 22 Jan 2019 17:03:56 +0000 (19:03 +0200)
committerJan-Simon Moeller <jsmoeller@linuxfoundation.org>
Tue, 5 Mar 2019 02:05:08 +0000 (02:05 +0000)
neard service clients registered for tag interface call a series
of getter methods via dbus. In the case of a tag programmed with a
valid NDEF containing an empty record (D0 00 00) no valid dbus
string type is associated with the record and the
get_type_property call results in a dbus error and neard service
exit.

This commit offers a workaround to avoid this particular situation
while a more comprehensive solution is found (there are other
record types that would fall in this same scenario).

Bug-AGL: SPEC-2123
Change-Id: I1b6d639bdc2aea0a331e8c06d6eac18da21482f5
Signed-off-by: raquel medina <raquel.medina@konsulko.com>
(cherry picked from commit a4a506023da9ebe77539af167712320a3e0cd850)

meta-agl-profile-core/recipes-connectivity/neard/files/0002-ndef-avoid-dbus-property_get_type-method-on-empty-re.patch [new file with mode: 0644]
meta-agl-profile-core/recipes-connectivity/neard/neard_0.16.bbappend

diff --git a/meta-agl-profile-core/recipes-connectivity/neard/files/0002-ndef-avoid-dbus-property_get_type-method-on-empty-re.patch b/meta-agl-profile-core/recipes-connectivity/neard/files/0002-ndef-avoid-dbus-property_get_type-method-on-empty-re.patch
new file mode 100644 (file)
index 0000000..49c11a5
--- /dev/null
@@ -0,0 +1,33 @@
+From d7ea2a00e00795ad24897e3481b015a27d37d60f Mon Sep 17 00:00:00 2001
+From: Raquel Medina <raquel.medina@konsulko.com>
+Date: Tue, 22 Jan 2019 09:00:05 -0500
+Subject: [PATCH] ndef: avoid dbus property_get_type method  on empty record
+
+Signed-off-by: Raquel Medina <raquel.medina@konsulko.com>
+---
+ src/ndef.c | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/src/ndef.c b/src/ndef.c
+index 5656baf..883c6f4 100644
+--- a/src/ndef.c
++++ b/src/ndef.c
+@@ -2832,10 +2832,14 @@ GList *near_ndef_parse_msg(uint8_t *ndef_data, size_t ndef_length,
+               case RECORD_TYPE_WKT_ALTERNATIVE_CARRIER:
+               case RECORD_TYPE_WKT_COLLISION_RESOLUTION:
+               case RECORD_TYPE_WKT_ERROR:
+-              case RECORD_TYPE_UNKNOWN:
+               case RECORD_TYPE_ERROR:
+                       break;
++              case RECORD_TYPE_UNKNOWN:
++                      if (record->header->tnf == RECORD_TNF_EMPTY)
++                              goto fail;
++                      break;
++
+               case RECORD_TYPE_WKT_HANDOVER_REQUEST:
+               case RECORD_TYPE_WKT_HANDOVER_SELECT:
+                       /*
+-- 
+2.17.1
+
index 4bca42d..64a044c 100644 (file)
@@ -1,4 +1,7 @@
 FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
 
-SRC_URI_append = "file://0001-systemd-neard-add-multi-user.target-to-neard.service.patch"
+SRC_URI_append = "\
+       file://0001-systemd-neard-add-multi-user.target-to-neard.service.patch \
+       file://0002-ndef-avoid-dbus-property_get_type-method-on-empty-re.patch \
+       "
 SYSTEMD_SERVICE_${PN} = "neard.service"