diff --git a/lib/json/json_util.c b/lib/json/json_util.c index 4a9b5b405..cb9a90140 100644 --- a/lib/json/json_util.c +++ b/lib/json/json_util.c @@ -340,20 +340,22 @@ spdk_json_decode_array(const struct spdk_json_val *values, spdk_json_decode_fn d { uint32_t i; char *field; + char *out_end; if (values == NULL || values->type != SPDK_JSON_VAL_ARRAY_BEGIN) { return -1; } - if (values->len > max_size) { - return -1; - } - *out_size = 0; field = out; + out_end = field + max_size * stride; for (i = 0; i < values->len;) { const struct spdk_json_val *v = &values[i + 1]; + if (field == out_end) { + return -1; + } + if (decode_func(v, field)) { return -1; }