mirror of https://github.com/mpv-player/mpv
json: unify json_parse depth to MAX_JSON_DEPTH=50
This commit is contained in:
parent
2e7fcc5a2a
commit
f5eb7ea1a9
|
@ -126,7 +126,7 @@ static char *json_execute_command(struct mpv_handle *client, void *ta_parent,
|
||||||
bool async = false;
|
bool async = false;
|
||||||
bool send_reply = true;
|
bool send_reply = true;
|
||||||
|
|
||||||
rc = json_parse(ta_parent, &msg_node, &src, 50);
|
rc = json_parse(ta_parent, &msg_node, &src, MAX_JSON_DEPTH);
|
||||||
if (rc < 0) {
|
if (rc < 0) {
|
||||||
mp_err(log, "malformed JSON received: '%s'\n", src);
|
mp_err(log, "malformed JSON received: '%s'\n", src);
|
||||||
rc = MPV_ERROR_INVALID_PARAMETER;
|
rc = MPV_ERROR_INVALID_PARAMETER;
|
||||||
|
|
|
@ -21,6 +21,8 @@
|
||||||
// We reuse mpv_node.
|
// We reuse mpv_node.
|
||||||
#include "libmpv/client.h"
|
#include "libmpv/client.h"
|
||||||
|
|
||||||
|
#define MAX_JSON_DEPTH 50
|
||||||
|
|
||||||
int json_parse(void *ta_parent, struct mpv_node *dst, char **src, int max_depth);
|
int json_parse(void *ta_parent, struct mpv_node *dst, char **src, int max_depth);
|
||||||
void json_skip_whitespace(char **src);
|
void json_skip_whitespace(char **src);
|
||||||
int json_write(char **s, struct mpv_node *src);
|
int json_write(char **s, struct mpv_node *src);
|
||||||
|
|
|
@ -1163,7 +1163,7 @@ static int script_parse_json(lua_State *L, void *tmp)
|
||||||
bool trail = lua_toboolean(L, 2);
|
bool trail = lua_toboolean(L, 2);
|
||||||
bool ok = false;
|
bool ok = false;
|
||||||
struct mpv_node node;
|
struct mpv_node node;
|
||||||
if (json_parse(tmp, &node, &text, 32) >= 0) {
|
if (json_parse(tmp, &node, &text, MAX_JSON_DEPTH) >= 0) {
|
||||||
json_skip_whitespace(&text);
|
json_skip_whitespace(&text);
|
||||||
ok = !text[0] || trail;
|
ok = !text[0] || trail;
|
||||||
}
|
}
|
||||||
|
|
|
@ -63,8 +63,6 @@ static const struct entry entries[] = {
|
||||||
NODE_MAP(L("_a12"), L(NODE_STR("b")))},
|
NODE_MAP(L("_a12"), L(NODE_STR("b")))},
|
||||||
};
|
};
|
||||||
|
|
||||||
#define MAX_DEPTH 10
|
|
||||||
|
|
||||||
int main(void)
|
int main(void)
|
||||||
{
|
{
|
||||||
for (int n = 0; n < MP_ARRAY_SIZE(entries); n++) {
|
for (int n = 0; n < MP_ARRAY_SIZE(entries); n++) {
|
||||||
|
@ -73,7 +71,7 @@ int main(void)
|
||||||
char *s = talloc_strdup(tmp, e->src);
|
char *s = talloc_strdup(tmp, e->src);
|
||||||
json_skip_whitespace(&s);
|
json_skip_whitespace(&s);
|
||||||
struct mpv_node res;
|
struct mpv_node res;
|
||||||
bool ok = json_parse(tmp, &res, &s, MAX_DEPTH) >= 0;
|
bool ok = json_parse(tmp, &res, &s, MAX_JSON_DEPTH) >= 0;
|
||||||
assert_true(ok != e->expect_fail);
|
assert_true(ok != e->expect_fail);
|
||||||
if (!ok) {
|
if (!ok) {
|
||||||
talloc_free(tmp);
|
talloc_free(tmp);
|
||||||
|
|
Loading…
Reference in New Issue