Skip to content

Commit d66069d

Browse files
lpereiraAnas Nashif
authored andcommitted
lib: json: Fix off-by-one error when encoding objects
append_bytes_to_buf() already writes a NUL byte; no need to call append_bytes() again with "" and size 1. Signed-off-by: Leandro Pereira <[email protected]>
1 parent 637087c commit d66069d

File tree

1 file changed

+6
-23
lines changed

1 file changed

+6
-23
lines changed

lib/json/json.c

Lines changed: 6 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -797,10 +797,6 @@ static int bool_encode(const bool *value, json_append_bytes_t append_bytes,
797797
return append_bytes("false", 5, data);
798798
}
799799

800-
static int obj_encode(const struct json_obj_descr *descr, size_t descr_len,
801-
const void *val, json_append_bytes_t append_bytes,
802-
void *data);
803-
804800
static int encode(const struct json_obj_descr *descr, const void *val,
805801
json_append_bytes_t append_bytes, void *data)
806802
{
@@ -816,18 +812,19 @@ static int encode(const struct json_obj_descr *descr, const void *val,
816812
return arr_encode(descr->element_descr, ptr,
817813
val, append_bytes, data);
818814
case JSON_TOK_OBJECT_START:
819-
return obj_encode(descr->sub_descr, descr->sub_descr_len,
820-
ptr, append_bytes, data);
815+
return json_obj_encode(descr->sub_descr,
816+
descr->sub_descr_len,
817+
ptr, append_bytes, data);
821818
case JSON_TOK_NUMBER:
822819
return num_encode(ptr, append_bytes, data);
823820
default:
824821
return -EINVAL;
825822
}
826823
}
827824

828-
static int obj_encode(const struct json_obj_descr *descr, size_t descr_len,
829-
const void *val, json_append_bytes_t append_bytes,
830-
void *data)
825+
int json_obj_encode(const struct json_obj_descr *descr, size_t descr_len,
826+
const void *val, json_append_bytes_t append_bytes,
827+
void *data)
831828
{
832829
size_t i;
833830
int ret;
@@ -865,20 +862,6 @@ static int obj_encode(const struct json_obj_descr *descr, size_t descr_len,
865862
return append_bytes("}", 1, data);
866863
}
867864

868-
int json_obj_encode(const struct json_obj_descr *descr, size_t descr_len,
869-
const void *val, json_append_bytes_t append_bytes,
870-
void *data)
871-
{
872-
int ret;
873-
874-
ret = obj_encode(descr, descr_len, val, append_bytes, data);
875-
if (ret < 0) {
876-
return ret;
877-
}
878-
879-
return append_bytes("", 1, data);
880-
}
881-
882865
struct appender {
883866
char *buffer;
884867
size_t used;

0 commit comments

Comments
 (0)