json: allocate one extra byte for the \0

This commit is contained in:
Wim Taymans 2021-01-19 16:56:55 +01:00
parent f891324e25
commit 579e8a4ea6
4 changed files with 6 additions and 5 deletions

View file

@ -71,7 +71,7 @@ static void expect_string(struct spa_json *it, const char *str)
char *s;
spa_assert((len = spa_json_next(it, &value)) > 0);
check_type(TYPE_STRING, value, len);
s = alloca(len);
s = alloca(len+1);
spa_json_parse_string(value, len, s);
spa_assert(strcmp(s, str) == 0);
}

View file

@ -168,7 +168,7 @@ static int parse_modules(struct data *d, const char *str)
if (spa_json_is_container(aval, alen))
alen = spa_json_container_len(&it[2], aval, alen);
args = malloc(alen);
args = malloc(alen + 1);
spa_json_parse_string(aval, alen, args);
} else if (strcmp(arg, "flags") == 0) {
flags = strndup(aval, alen);
@ -249,7 +249,8 @@ static int parse_objects(struct data *d, const char *str)
if (strcmp(arg, "args") == 0) {
if (spa_json_is_container(aval, alen))
alen = spa_json_container_len(&it[2], aval, alen);
args = malloc(alen);
args = malloc(alen + 1);
spa_json_parse_string(aval, alen, args);
} else if (strcmp(arg, "flags") == 0) {
flags = strndup(aval, alen);

View file

@ -60,7 +60,7 @@ static bool find_match(struct spa_json *arr, struct pw_properties *props)
if (spa_json_is_null(value, len)) {
success = str == NULL;
} else {
spa_json_parse_string(value, SPA_MIN(len, 1024), val);
spa_json_parse_string(value, SPA_MIN(len, 1023), val);
value = val;
len = strlen(val);
}

View file

@ -1616,7 +1616,7 @@ static int json_to_pod(struct spa_pod_builder *b, uint32_t id,
spa_pod_builder_none(b);
}
else {
char *val = alloca(len);
char *val = alloca(len+1);
spa_json_parse_string(value, len, val);
switch (info->parent) {
case SPA_TYPE_Id: