summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArron Wang <arron.wang@intel.com>2014-07-07 14:17:55 +0800
committerArron Wang <arron.wang@intel.com>2014-07-07 14:18:09 +0800
commitac694692b7c658230610cee0e9e25012fed6c99f (patch)
tree0905aa9250b3a60fda5ac9c621cfd396b1cdd230
parentbde9e9a0d668804b0501647f42f38f8b29ad7542 (diff)
downloadnfc-manager-neard-tizen_3.0.2014.q3_common.tar.gz
nfc-manager-neard-tizen_3.0.2014.q3_common.tar.bz2
nfc-manager-neard-tizen_3.0.2014.q3_common.zip
Some NFC tag has empty record, we should also handle them properly and allow use the write new data to it Fixed TC-173 Change-Id: I26c712ec0939ee82a6a154865412d5c1f9411aaa
-rw-r--r--client/net_nfc_client_ndef_message.c2
-rw-r--r--client/net_nfc_neard.c9
-rw-r--r--common/net_nfc_util_ndef_message.c4
3 files changed, 9 insertions, 6 deletions
diff --git a/client/net_nfc_client_ndef_message.c b/client/net_nfc_client_ndef_message.c
index 7f561a9..4634f1b 100644
--- a/client/net_nfc_client_ndef_message.c
+++ b/client/net_nfc_client_ndef_message.c
@@ -91,7 +91,7 @@ API net_nfc_error_e net_nfc_get_ndef_message_byte_length(
RETV_IF(NULL == length, NET_NFC_NULL_PARAMETER);
*length = net_nfc_util_get_ndef_message_length(ndef_message);
- if (*length > 0)
+ if (*length >= 0)
result = NET_NFC_OK;
else
result = NET_NFC_INVALID_PARAM;
diff --git a/client/net_nfc_neard.c b/client/net_nfc_neard.c
index c2eafe1..ed3bee8 100644
--- a/client/net_nfc_neard.c
+++ b/client/net_nfc_neard.c
@@ -303,7 +303,7 @@ static void _tag_found_cb(const char *tagName, void *user_data)
if (neardal_get_tag_properties(tagName, &tag) != NEARDAL_SUCCESS)
return;
- if (tag == NULL || tag->records == NULL)
+ if (tag == NULL)
return;
net_nfc_manager_util_play_sound(NET_NFC_TASK_START);
@@ -425,7 +425,7 @@ static void _read_completed_cb(GVariant *ret, void *user_data)
rawNDEF->length = (int)length;
rawNDEF->buffer = g_try_malloc0(rawNDEF->length);
- if (rawNDEF->buffer == NULL) {
+ if (rawNDEF->length > 0 && rawNDEF->buffer == NULL) {
g_free(rawNDEF);
goto exit;
}
@@ -768,7 +768,10 @@ net_nfc_error_e net_nfc_neard_write_ndef(net_nfc_target_handle_s *handle,
if (record == NULL)
return NET_NFC_ALLOC_FAIL;
- record->name = g_strdup(tag->records[0]);
+ if (tag->records != NULL)
+ record->name = g_strdup(tag->records[0]);
+ else
+ record->name = g_strdup(tag->name);
record->type = g_strdup("Raw");
record->rawNDEF = g_try_malloc0(data->length);
if (record->rawNDEF == NULL) {
diff --git a/common/net_nfc_util_ndef_message.c b/common/net_nfc_util_ndef_message.c
index 1bbb629..35f254e 100644
--- a/common/net_nfc_util_ndef_message.c
+++ b/common/net_nfc_util_ndef_message.c
@@ -35,7 +35,7 @@ net_nfc_error_e net_nfc_util_convert_rawdata_to_ndef_message(
RETV_IF(NULL == ndef, NET_NFC_NULL_PARAMETER);
RETV_IF(NULL == rawdata, NET_NFC_NULL_PARAMETER);
- RETV_IF(rawdata->length < 3, NET_NFC_INVALID_FORMAT);
+ RETV_IF(rawdata->length < 0, NET_NFC_INVALID_FORMAT);
current = rawdata->buffer;
last = current + rawdata->length;
@@ -200,7 +200,7 @@ net_nfc_error_e net_nfc_util_convert_rawdata_to_ndef_message(
ndef->recordCount++;
- if((current != last) || ((ndef_header & NET_NFC_NDEF_RECORD_MASK_ME) == 0))
+ if((current != last) || (((ndef_header & NET_NFC_NDEF_RECORD_MASK_ME) == 0) && (rawdata->length != 0)))
{
result = NET_NFC_INVALID_FORMAT;
goto error;