You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mynewt.apache.org by ma...@apache.org on 2017/04/29 00:20:46 UTC
[1/2] incubator-mynewt-core git commit: fix: cbor decode error when
keys have sub strings
Repository: incubator-mynewt-core
Updated Branches:
refs/heads/master eb4f28984 -> 2c8cdfb46
fix: cbor decode error when keys have sub strings
Project: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/commit/551c0a66
Tree: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/tree/551c0a66
Diff: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/diff/551c0a66
Branch: refs/heads/master
Commit: 551c0a66ed86e01ea745dac839e52056094fc9b6
Parents: eb4f289
Author: wesley <we...@wolinke.com>
Authored: Fri Apr 28 13:09:07 2017 +0800
Committer: wesley <we...@wolinke.com>
Committed: Fri Apr 28 13:09:07 2017 +0800
----------------------------------------------------------------------
encoding/cborattr/src/cborattr.c | 3 +-
encoding/cborattr/test/src/test_cborattr.c | 1 +
encoding/cborattr/test/src/test_cborattr.h | 1 +
.../testcases/cborattr_decode_substring_key.c | 111 +++++++++++++++++++
4 files changed, 115 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/551c0a66/encoding/cborattr/src/cborattr.c
----------------------------------------------------------------------
diff --git a/encoding/cborattr/src/cborattr.c b/encoding/cborattr/src/cborattr.c
index d2e731a..6f6912e 100644
--- a/encoding/cborattr/src/cborattr.c
+++ b/encoding/cborattr/src/cborattr.c
@@ -219,7 +219,8 @@ cbor_internal_read_object(CborValue *root_value,
if (cursor->attribute == CBORATTR_ATTR_UNNAMED &&
attrbuf[0] == '\0') {
best_match = cursor;
- } else if (!memcmp(cursor->attribute, attrbuf, len)) {
+ } else if (strlen(cursor->attribute) == len &&
+ !memcmp(cursor->attribute, attrbuf, len)) {
break;
}
}
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/551c0a66/encoding/cborattr/test/src/test_cborattr.c
----------------------------------------------------------------------
diff --git a/encoding/cborattr/test/src/test_cborattr.c b/encoding/cborattr/test/src/test_cborattr.c
index 8125660..15a892a 100644
--- a/encoding/cborattr/test/src/test_cborattr.c
+++ b/encoding/cborattr/test/src/test_cborattr.c
@@ -32,6 +32,7 @@ TEST_SUITE(test_cborattr_suite)
test_cborattr_decode_string_array();
test_cborattr_decode_object_array();
test_cborattr_decode_unnamed_array();
+ test_cborattr_decode_substring_key();
}
#if MYNEWT_VAL(SELFTEST)
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/551c0a66/encoding/cborattr/test/src/test_cborattr.h
----------------------------------------------------------------------
diff --git a/encoding/cborattr/test/src/test_cborattr.h b/encoding/cborattr/test/src/test_cborattr.h
index 1a5757b..2ffe515 100644
--- a/encoding/cborattr/test/src/test_cborattr.h
+++ b/encoding/cborattr/test/src/test_cborattr.h
@@ -47,6 +47,7 @@ TEST_CASE_DECL(test_cborattr_decode_bool_array);
TEST_CASE_DECL(test_cborattr_decode_string_array);
TEST_CASE_DECL(test_cborattr_decode_object_array);
TEST_CASE_DECL(test_cborattr_decode_unnamed_array);
+TEST_CASE_DECL(test_cborattr_decode_substring_key);
#ifdef __cplusplus
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/551c0a66/encoding/cborattr/test/src/testcases/cborattr_decode_substring_key.c
----------------------------------------------------------------------
diff --git a/encoding/cborattr/test/src/testcases/cborattr_decode_substring_key.c b/encoding/cborattr/test/src/testcases/cborattr_decode_substring_key.c
new file mode 100644
index 0000000..6eee774
--- /dev/null
+++ b/encoding/cborattr/test/src/testcases/cborattr_decode_substring_key.c
@@ -0,0 +1,111 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+#include "test_cborattr.h"
+
+/*
+ * Where we collect cbor data.
+ */
+static uint8_t test_cbor_buf[1024];
+static int test_cbor_len;
+
+/*
+ * CBOR encoder data structures.
+ */
+static int test_cbor_wr(struct cbor_encoder_writer *, const char *, int);
+static CborEncoder test_encoder;
+static struct cbor_encoder_writer test_writer = {
+ .write = test_cbor_wr
+};
+
+static int
+test_cbor_wr(struct cbor_encoder_writer *cew, const char *data, int len)
+{
+ memcpy(test_cbor_buf + test_cbor_len, data, len);
+ test_cbor_len += len;
+
+ assert(test_cbor_len < sizeof(test_cbor_buf));
+ return 0;
+}
+
+static void
+test_encode_substring_key(void)
+{
+ CborEncoder data;
+
+ cbor_encoder_init(&test_encoder, &test_writer, 0);
+
+ /*
+ * { "a": "A", "aa": "AA", "aaa" : "AAA" }
+ */
+ cbor_encoder_create_map(&test_encoder, &data, CborIndefiniteLength);
+
+ cbor_encode_text_stringz(&data, "a");
+ cbor_encode_text_stringz(&data, "A");
+ cbor_encode_text_stringz(&data, "aa");
+ cbor_encode_text_stringz(&data, "AA");
+ cbor_encode_text_stringz(&data, "aaa");
+ cbor_encode_text_stringz(&data, "AAA");
+
+ cbor_encoder_close_container(&test_encoder, &data);
+}
+
+/*
+ * substring key
+ */
+TEST_CASE(test_cborattr_decode_substring_key)
+{
+ int rc;
+ char test_str_1a[4] = { '\0' };
+ char test_str_2a[4] = { '\0' };
+ char test_str_3a[4] = { '\0' };
+ struct cbor_attr_t test_attrs[] = {
+ [0] = {
+ .attribute = "aaa",
+ .type = CborAttrTextStringType,
+ .addr.string = test_str_3a,
+ .len = sizeof(test_str_3a),
+ .nodefault = true
+ },
+ [1] = {
+ .attribute = "aa",
+ .type = CborAttrTextStringType,
+ .addr.string = test_str_2a,
+ .len = sizeof(test_str_2a),
+ .nodefault = true
+ },
+ [2] = {
+ .attribute = "a",
+ .type = CborAttrTextStringType,
+ .addr.string = test_str_1a,
+ .len = sizeof(test_str_1a),
+ .nodefault = true
+ },
+ [3] = {
+ .attribute = NULL
+ }
+ };
+
+ test_encode_substring_key();
+
+ rc = cbor_read_flat_attrs(test_cbor_buf, test_cbor_len, test_attrs);
+ TEST_ASSERT(rc == 0);
+ TEST_ASSERT(!strcmp(test_str_1a, "A"));
+ TEST_ASSERT(!strcmp(test_str_2a, "AA"));
+ TEST_ASSERT(!strcmp(test_str_3a, "AAA"));
+}
[2/2] incubator-mynewt-core git commit: This closes #251.
Posted by ma...@apache.org.
This closes #251.
Merge branch 'cbor_substring_key' of https://github.com/wesley-wu/incubator-mynewt-core
Project: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/commit/2c8cdfb4
Tree: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/tree/2c8cdfb4
Diff: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/diff/2c8cdfb4
Branch: refs/heads/master
Commit: 2c8cdfb46d27b5ee99e1eb7da29f2a814bd1c3a8
Parents: eb4f289 551c0a6
Author: Marko Kiiskila <ma...@runtime.io>
Authored: Fri Apr 28 17:20:15 2017 -0700
Committer: Marko Kiiskila <ma...@runtime.io>
Committed: Fri Apr 28 17:20:15 2017 -0700
----------------------------------------------------------------------
encoding/cborattr/src/cborattr.c | 3 +-
encoding/cborattr/test/src/test_cborattr.c | 1 +
encoding/cborattr/test/src/test_cborattr.h | 1 +
.../testcases/cborattr_decode_substring_key.c | 111 +++++++++++++++++++
4 files changed, 115 insertions(+), 1 deletion(-)
----------------------------------------------------------------------