sway

i3-compatible Wayland compositor
git clone https://git.awy.one/sway
Log | Files | Refs | README | LICENSE

commit 47f1f9b63ea04ee5d520f36d9a0ef5de04921816
parent 152a559e30244e64d4d61b9c87db442dfa04ee52
Author: Tudor Brindus <me@tbrindus.ca>
Date:   Sun, 21 Mar 2021 17:14:16 -0400

swaybar: use INT_MAX max JSON depth when parsing IPC response

There's no inherent limit on the nesting Sway can generate, and the
default used by `json_tokener_new`, 32, can plausibly be hit during
regular usage.

Fixes #6115.

Diffstat:
Mswaybar/ipc.c | 11++++++++---
1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/swaybar/ipc.c b/swaybar/ipc.c @@ -547,9 +547,14 @@ bool handle_ipc_readable(struct swaybar *bar) { return false; } - json_object *result = json_tokener_parse(resp->payload); - if (!result) { - sway_log(SWAY_ERROR, "failed to parse payload as json"); + json_tokener *tok = json_tokener_new_ex(INT_MAX); + json_object *result = json_tokener_parse_ex(tok, resp->payload, -1); + enum json_tokener_error err = json_tokener_get_error(tok); + json_tokener_free(tok); + + if (err != json_tokener_success) { + sway_log(SWAY_ERROR, "failed to parse payload as json: %s", + json_tokener_error_desc(err)); free_ipc_response(resp); return false; }