summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarko Kiiskila <marko@runtime.io>2016-05-17 11:52:58 -0700
committerMarko Kiiskila <marko@runtime.io>2016-05-17 11:52:58 -0700
commitafc0a74bc3e99c4a6acaab918fadf3375857ebdf (patch)
treed9f3bb11b5ea9e085f33dee2db397a6bfee1459d
parent2fb470790785d73037b4b80a9a77b0f320f78ce5 (diff)
parente3e4e9117ff712d07fbcee3835e6b4ddeaf41f68 (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.c4
-rw-r--r--libs/imgmgr/src/imgmgr_fs.c6
-rw-r--r--libs/json/include/json/json.h16
-rw-r--r--libs/json/src/json_decode.c20
-rw-r--r--libs/json/src/json_encode.c1
-rw-r--r--libs/json/src/test/test_json_simple.c4
-rw-r--r--libs/newtmgr/src/newtmgr.c2
-rw-r--r--libs/util/src/cbmem.c11
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);
}