blobmsg: blobmsg_add_json_element() 64-bit values
libjson-c json_type_int values are stored as int64_t. Use json_object_get_int64() instead of json_object_get_int() to avoid clamping to INT32_MAX. Reviewed-by: Jo-Philipp Wich <jo@mein.io> Signed-off-by: Dainis Jonitis <dainis.jonitis@ubnt.com> [fixed author to match SoB, added unit test results] Signed-off-by: Petr Štetiar <ynezz@true.cz>
This commit is contained in:
parent
f0da3a4283
commit
a36ee96618
2 changed files with 24 additions and 18 deletions
|
@ -66,9 +66,15 @@ bool blobmsg_add_json_element(struct blob_buf *b, const char *name, json_object
|
||||||
case json_type_boolean:
|
case json_type_boolean:
|
||||||
blobmsg_add_u8(b, name, json_object_get_boolean(obj));
|
blobmsg_add_u8(b, name, json_object_get_boolean(obj));
|
||||||
break;
|
break;
|
||||||
case json_type_int:
|
case json_type_int: {
|
||||||
blobmsg_add_u32(b, name, json_object_get_int(obj));
|
int64_t i64 = json_object_get_int64(obj);
|
||||||
|
if (i64 >= INT32_MIN && i64 <= INT32_MAX) {
|
||||||
|
blobmsg_add_u32(b, name, (uint32_t)i64);
|
||||||
|
} else {
|
||||||
|
blobmsg_add_u64(b, name, (uint64_t)i64);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
case json_type_double:
|
case json_type_double:
|
||||||
blobmsg_add_double(b, name, json_object_get_double(obj));
|
blobmsg_add_double(b, name, json_object_get_double(obj));
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -46,8 +46,8 @@ check that blobmsg is producing expected results:
|
||||||
32767 (i32)
|
32767 (i32)
|
||||||
-2147483648 (i32)
|
-2147483648 (i32)
|
||||||
2147483647 (i32)
|
2147483647 (i32)
|
||||||
-2147483648 (i32)
|
-9223372036854775808 (i64)
|
||||||
2147483647 (i32)
|
9223372036854775807 (i64)
|
||||||
133.700000 (dbl)
|
133.700000 (dbl)
|
||||||
}
|
}
|
||||||
Testdata: {
|
Testdata: {
|
||||||
|
@ -60,8 +60,8 @@ check that blobmsg is producing expected results:
|
||||||
\tbar-max : 32767 (i32) (esc)
|
\tbar-max : 32767 (i32) (esc)
|
||||||
\tbaz-min : -2147483648 (i32) (esc)
|
\tbaz-min : -2147483648 (i32) (esc)
|
||||||
\tbaz-max : 2147483647 (i32) (esc)
|
\tbaz-max : 2147483647 (i32) (esc)
|
||||||
\ttaz-min : -2147483648 (i32) (esc)
|
\ttaz-min : -9223372036854775808 (i64) (esc)
|
||||||
\ttaz-max : 2147483647 (i32) (esc)
|
\ttaz-max : 9223372036854775807 (i64) (esc)
|
||||||
\tworld : 2 (str) (esc)
|
\tworld : 2 (str) (esc)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -109,8 +109,8 @@ check that blobmsg is producing expected results:
|
||||||
32767 (i32)
|
32767 (i32)
|
||||||
-2147483648 (i32)
|
-2147483648 (i32)
|
||||||
2147483647 (i32)
|
2147483647 (i32)
|
||||||
-2147483648 (i32)
|
-9223372036854775808 (i64)
|
||||||
2147483647 (i32)
|
9223372036854775807 (i64)
|
||||||
133.700000 (dbl)
|
133.700000 (dbl)
|
||||||
}
|
}
|
||||||
Testdata: {
|
Testdata: {
|
||||||
|
@ -123,8 +123,8 @@ check that blobmsg is producing expected results:
|
||||||
\tbar-max : 32767 (i32) (esc)
|
\tbar-max : 32767 (i32) (esc)
|
||||||
\tbaz-min : -2147483648 (i32) (esc)
|
\tbaz-min : -2147483648 (i32) (esc)
|
||||||
\tbaz-max : 2147483647 (i32) (esc)
|
\tbaz-max : 2147483647 (i32) (esc)
|
||||||
\ttaz-min : -2147483648 (i32) (esc)
|
\ttaz-min : -9223372036854775808 (i64) (esc)
|
||||||
\ttaz-max : 2147483647 (i32) (esc)
|
\ttaz-max : 9223372036854775807 (i64) (esc)
|
||||||
\tworld : 2 (str) (esc)
|
\tworld : 2 (str) (esc)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -172,8 +172,8 @@ check that blobmsg is producing expected results:
|
||||||
32767 (i32)
|
32767 (i32)
|
||||||
-2147483648 (i32)
|
-2147483648 (i32)
|
||||||
2147483647 (i32)
|
2147483647 (i32)
|
||||||
-2147483648 (i32)
|
-9223372036854775808 (i64)
|
||||||
2147483647 (i32)
|
9223372036854775807 (i64)
|
||||||
133.700000 (dbl)
|
133.700000 (dbl)
|
||||||
}
|
}
|
||||||
Testdata: {
|
Testdata: {
|
||||||
|
@ -186,8 +186,8 @@ check that blobmsg is producing expected results:
|
||||||
\tbar-max : 32767 (i32) (esc)
|
\tbar-max : 32767 (i32) (esc)
|
||||||
\tbaz-min : -2147483648 (i32) (esc)
|
\tbaz-min : -2147483648 (i32) (esc)
|
||||||
\tbaz-max : 2147483647 (i32) (esc)
|
\tbaz-max : 2147483647 (i32) (esc)
|
||||||
\ttaz-min : -2147483648 (i32) (esc)
|
\ttaz-min : -9223372036854775808 (i64) (esc)
|
||||||
\ttaz-max : 2147483647 (i32) (esc)
|
\ttaz-max : 9223372036854775807 (i64) (esc)
|
||||||
\tworld : 2 (str) (esc)
|
\tworld : 2 (str) (esc)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -235,8 +235,8 @@ check that blobmsg is producing expected results:
|
||||||
32767 (i32)
|
32767 (i32)
|
||||||
-2147483648 (i32)
|
-2147483648 (i32)
|
||||||
2147483647 (i32)
|
2147483647 (i32)
|
||||||
-2147483648 (i32)
|
-9223372036854775808 (i64)
|
||||||
2147483647 (i32)
|
9223372036854775807 (i64)
|
||||||
133.700000 (dbl)
|
133.700000 (dbl)
|
||||||
}
|
}
|
||||||
Testdata: {
|
Testdata: {
|
||||||
|
@ -249,7 +249,7 @@ check that blobmsg is producing expected results:
|
||||||
\tbar-max : 32767 (i32) (esc)
|
\tbar-max : 32767 (i32) (esc)
|
||||||
\tbaz-min : -2147483648 (i32) (esc)
|
\tbaz-min : -2147483648 (i32) (esc)
|
||||||
\tbaz-max : 2147483647 (i32) (esc)
|
\tbaz-max : 2147483647 (i32) (esc)
|
||||||
\ttaz-min : -2147483648 (i32) (esc)
|
\ttaz-min : -9223372036854775808 (i64) (esc)
|
||||||
\ttaz-max : 2147483647 (i32) (esc)
|
\ttaz-max : 9223372036854775807 (i64) (esc)
|
||||||
\tworld : 2 (str) (esc)
|
\tworld : 2 (str) (esc)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue