diff options
| author | Furkan Sahin <furkan-dev@proton.me> | 2021-03-21 17:14:16 -0400 |
|---|---|---|
| committer | Furkan Sahin <furkan-dev@proton.me> | 2021-03-21 17:14:16 -0400 |
| commit | 680dc0e6f40788bf802f746c1fab15ac4ab363be (patch) | |
| tree | 6a9301d7d49885d693677803de228422d98adc39 | |
| parent | 641a2f10482e08ee6cbd0fe461b3d0a4a8a65c96 (diff) | |
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.
| -rw-r--r-- | swaybar/ipc.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/swaybar/ipc.c b/swaybar/ipc.c index 6bbe9408..05238d8b 100644 --- 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; } |
