diff options
author | Marko Kiiskila <marko@runtime.io> | 2016-05-17 11:52:58 -0700 |
---|---|---|
committer | Marko Kiiskila <marko@runtime.io> | 2016-05-17 11:52:58 -0700 |
commit | afc0a74bc3e99c4a6acaab918fadf3375857ebdf (patch) | |
tree | d9f3bb11b5ea9e085f33dee2db397a6bfee1459d | |
parent | 2fb470790785d73037b4b80a9a77b0f320f78ce5 (diff) | |
parent | e3e4e9117ff712d07fbcee3835e6b4ddeaf41f68 (diff) |
This closes #54.
Merge branch 'mynewt-add' of https://github.com/vrahane/incubator-mynewt-core into develop
-rw-r--r-- | libs/imgmgr/src/imgmgr.c | 4 | ||||
-rw-r--r-- | libs/imgmgr/src/imgmgr_fs.c | 6 | ||||
-rw-r--r-- | libs/json/include/json/json.h | 16 | ||||
-rw-r--r-- | libs/json/src/json_decode.c | 20 | ||||
-rw-r--r-- | libs/json/src/json_encode.c | 1 | ||||
-rw-r--r-- | libs/json/src/test/test_json_simple.c | 4 | ||||
-rw-r--r-- | libs/newtmgr/src/newtmgr.c | 2 | ||||
-rw-r--r-- | libs/util/src/cbmem.c | 11 |
8 files changed, 36 insertions, 28 deletions
diff --git a/libs/imgmgr/src/imgmgr.c b/libs/imgmgr/src/imgmgr.c index ef42cd55..eb192a0c 100644 --- a/libs/imgmgr/src/imgmgr.c +++ b/libs/imgmgr/src/imgmgr.c @@ -150,8 +150,8 @@ static int imgr_upload(struct nmgr_jbuf *njb) { char img_data[BASE64_ENCODE_SIZE(IMGMGR_NMGR_MAX_MSG)]; - unsigned int off = UINT_MAX; - unsigned int size = UINT_MAX; + long long unsigned int off = UINT_MAX; + long long unsigned int size = UINT_MAX; const struct json_attr_t off_attr[4] = { [0] = { .attribute = "off", diff --git a/libs/imgmgr/src/imgmgr_fs.c b/libs/imgmgr/src/imgmgr_fs.c index bbf8d944..ab33c54a 100644 --- a/libs/imgmgr/src/imgmgr_fs.c +++ b/libs/imgmgr/src/imgmgr_fs.c @@ -38,7 +38,7 @@ int imgr_file_download(struct nmgr_jbuf *njb) { - unsigned int off; + long long unsigned int off; char tmp_str[IMGMGR_NMGR_MAX_NAME + 1]; char img_data[BASE64_ENCODE_SIZE(IMGMGR_NMGR_MAX_MSG)]; const struct json_attr_t dload_attr[3] = { @@ -109,8 +109,8 @@ imgr_file_upload(struct nmgr_jbuf *njb) { char img_data[BASE64_ENCODE_SIZE(IMGMGR_NMGR_MAX_MSG)]; char file_name[IMGMGR_NMGR_MAX_NAME + 1]; - unsigned int off = UINT_MAX; - unsigned int size = UINT_MAX; + long long unsigned int off = UINT_MAX; + long long unsigned int size = UINT_MAX; const struct json_attr_t off_attr[5] = { [0] = { .attribute = "off", diff --git a/libs/json/include/json/json.h b/libs/json/include/json/json.h index e82ccf8c..ecf098a0 100644 --- a/libs/json/include/json/json.h +++ b/libs/json/include/json/json.h @@ -116,8 +116,8 @@ typedef enum { } json_type; struct json_enum_t { - char *name; - int value; + char *name; + long long int value; }; struct json_array_t { @@ -134,10 +134,10 @@ struct json_array_t { int storelen; } strings; struct { - int *store; + long long int *store; } integers; struct { - unsigned int *store; + long long unsigned int *store; } uintegers; struct { double *store; @@ -154,8 +154,8 @@ struct json_attr_t { char *attribute; json_type type; union { - int *integer; - unsigned int *uinteger; + long long int *integer; + long long unsigned int *uinteger; double *real; char *string; bool *boolean; @@ -164,8 +164,8 @@ struct json_attr_t { size_t offset; } addr; union { - int integer; - unsigned int uinteger; + long long int integer; + long long unsigned int uinteger; double real; bool boolean; char character; diff --git a/libs/json/src/json_decode.c b/libs/json/src/json_decode.c index 2dcde6f0..0d81c0d3 100644 --- a/libs/json/src/json_decode.c +++ b/libs/json/src/json_decode.c @@ -152,10 +152,10 @@ json_internal_read_object(struct json_buffer *jb, const struct json_attr_t *attr if (lptr != NULL) { switch (cursor->type) { case t_integer: - memcpy(lptr, &cursor->dflt.integer, sizeof(int)); + memcpy(lptr, &cursor->dflt.integer, sizeof(long long int)); break; case t_uinteger: - memcpy(lptr, &cursor->dflt.uinteger, sizeof(unsigned int)); + memcpy(lptr, &cursor->dflt.uinteger, sizeof(long long unsigned int)); break; case t_real: memcpy(lptr, &cursor->dflt.real, sizeof(double)); @@ -396,19 +396,21 @@ json_internal_read_object(struct json_buffer *jb, const struct json_attr_t *attr } return JSON_ERR_BADENUM; foundit: - (void)snprintf(valbuf, sizeof(valbuf), "%d", mp->value); + (void)snprintf(valbuf, sizeof(valbuf), "%lld", mp->value); } lptr = json_target_address(cursor, parent, offset); if (lptr != NULL) { switch (cursor->type) { case t_integer: { - int tmp = atoi(valbuf); - memcpy(lptr, &tmp, sizeof(int)); + long long int tmp = + (long long int)strtoll(valbuf, NULL, 10); + memcpy(lptr, &tmp, sizeof(long long int)); } break; case t_uinteger: { - unsigned int tmp = (unsigned int)atoi(valbuf); - memcpy(lptr, &tmp, sizeof(unsigned int)); + long long unsigned int tmp = + (long long unsigned int)strtoull(valbuf, NULL, 10); + memcpy(lptr, &tmp, sizeof(long long unsigned int)); } break; case t_real: { @@ -548,7 +550,7 @@ json_read_array(struct json_buffer *jb, const struct json_array_t *arr) n = jb->jb_readn(jb, valbuf, sizeof(valbuf)-1); valbuf[n] = '\0'; - arr->arr.integers.store[offset] = (int)strtol(valbuf, &ep, 0); + arr->arr.integers.store[offset] = (long long int)strtoll(valbuf, &ep, 0); if (ep == valbuf) { return JSON_ERR_BADNUM; } else { @@ -562,7 +564,7 @@ json_read_array(struct json_buffer *jb, const struct json_array_t *arr) n = jb->jb_readn(jb, valbuf, sizeof(valbuf)-1); valbuf[n] = '\0'; - arr->arr.uintegers.store[offset] = (unsigned int)strtoul(valbuf, &ep, 0); + arr->arr.uintegers.store[offset] = (long long unsigned int)strtoull(valbuf, &ep, 0); if (ep == valbuf) { return JSON_ERR_BADNUM; } else { diff --git a/libs/json/src/json_encode.c b/libs/json/src/json_encode.c index cddca31d..8512a666 100644 --- a/libs/json/src/json_encode.c +++ b/libs/json/src/json_encode.c @@ -241,6 +241,7 @@ err: int json_encode_array_finish(struct json_encoder *encoder) { + encoder->je_wr_commas = 1; JSON_ENCODE_ARRAY_END(encoder); return (0); diff --git a/libs/json/src/test/test_json_simple.c b/libs/json/src/test/test_json_simple.c index d1875a71..39d14b86 100644 --- a/libs/json/src/test/test_json_simple.c +++ b/libs/json/src/test/test_json_simple.c @@ -147,8 +147,8 @@ test_buf_init(struct test_jbuf *ptjb, char *string) { /* now test the decode on a string */ TEST_CASE(test_json_simple_decode){ struct test_jbuf tjb; - unsigned int uint_val; - int int_val; + long long unsigned int uint_val; + long long int int_val; bool bool_val; char string1[16]; char string2[16]; diff --git a/libs/newtmgr/src/newtmgr.c b/libs/newtmgr/src/newtmgr.c index 624ab586..c3bc6141 100644 --- a/libs/newtmgr/src/newtmgr.c +++ b/libs/newtmgr/src/newtmgr.c @@ -89,7 +89,7 @@ err: static int nmgr_def_console_echo(struct nmgr_jbuf *njb) { - int echo_on = 1; + long long int echo_on = 1; int rc; struct json_attr_t attrs[3] = { [0] = { diff --git a/libs/util/src/cbmem.c b/libs/util/src/cbmem.c index 27dc262c..05051aeb 100644 --- a/libs/util/src/cbmem.c +++ b/libs/util/src/cbmem.c @@ -92,7 +92,7 @@ cbmem_append(struct cbmem *cbmem, void *data, uint16_t len) } else { dst = (struct cbmem_entry_hdr *) cbmem->c_buf; } - end = (uint8_t *) dst + len; + end = (uint8_t *) dst + len + sizeof(*dst); /* If this item would take us past the end of this buffer, then adjust * the item to the beginning of the buffer. @@ -100,7 +100,7 @@ cbmem_append(struct cbmem *cbmem, void *data, uint16_t len) if (end > cbmem->c_buf_end) { cbmem->c_buf_cur_end = (uint8_t *) dst; dst = (struct cbmem_entry_hdr *) cbmem->c_buf; - end = (uint8_t *) dst + len; + end = (uint8_t *) dst + len + sizeof(*dst); if ((uint8_t *) cbmem->c_entry_start >= cbmem->c_buf_cur_end) { cbmem->c_entry_start = (struct cbmem_entry_hdr *) cbmem->c_buf; } @@ -160,12 +160,16 @@ cbmem_iter_next(struct cbmem *cbmem, struct cbmem_iter *iter) hdr = iter->ci_cur; iter->ci_cur = CBMEM_ENTRY_NEXT(iter->ci_cur); - if ((uint8_t *) iter->ci_cur == cbmem->c_buf_cur_end) { + if ((uint8_t *) iter->ci_cur >= cbmem->c_buf_cur_end) { iter->ci_cur = (struct cbmem_entry_hdr *) cbmem->c_buf; iter->ci_start = (struct cbmem_entry_hdr *) cbmem->c_buf; } } else { hdr = iter->ci_cur; + if (!iter->ci_cur) { + goto err; + } + if (hdr == CBMEM_ENTRY_NEXT(iter->ci_end)) { hdr = NULL; } else { @@ -173,6 +177,7 @@ cbmem_iter_next(struct cbmem *cbmem, struct cbmem_iter *iter) } } +err: return (hdr); } |