aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar Jason Nader <jason.nader@protonmail.com>2021-10-18 18:44:41 +0900
committerLibravatar Simon Ser <contact@emersion.fr>2021-10-18 14:20:24 +0200
commit55cd8abd76cf6a31ca7edf67473c048f90f99140 (patch)
treef2e16f42d610c7c375bbd572c7d9c6eb95ce7fae
parentswaymsg: use INT_MAX max JSON depth when parsing IPC response (diff)
downloadsway-55cd8abd76cf6a31ca7edf67473c048f90f99140.tar.gz
sway-55cd8abd76cf6a31ca7edf67473c048f90f99140.tar.zst
sway-55cd8abd76cf6a31ca7edf67473c048f90f99140.zip
swaymsg: be explicit about the json parser error
-rw-r--r--swaymsg/main.c15
1 files changed, 8 insertions, 7 deletions
diff --git a/swaymsg/main.c b/swaymsg/main.c
index ce5d7d71..c3468a16 100644
--- a/swaymsg/main.c
+++ b/swaymsg/main.c
@@ -483,12 +483,12 @@ int main(int argc, char **argv) {
483 // pretty print the json 483 // pretty print the json
484 json_tokener *tok = json_tokener_new_ex(INT_MAX); 484 json_tokener *tok = json_tokener_new_ex(INT_MAX);
485 json_object *obj = json_tokener_parse_ex(tok, resp, -1); 485 json_object *obj = json_tokener_parse_ex(tok, resp, -1);
486 enum json_tokener_error err = json_tokener_get_error(tok);
486 json_tokener_free(tok); 487 json_tokener_free(tok);
487 if (obj == NULL) { 488 if (obj == NULL || err != json_tokener_success) {
488 if (!quiet) { 489 if (!quiet) {
489 fprintf(stderr, "ERROR: Could not parse json response from ipc. " 490 sway_log(SWAY_ERROR, "failed to parse payload as json: %s",
490 "This is a bug in sway."); 491 json_tokener_error_desc(err));
491 printf("%s\n", resp);
492 } 492 }
493 ret = 1; 493 ret = 1;
494 } else { 494 } else {
@@ -522,11 +522,12 @@ int main(int argc, char **argv) {
522 522
523 json_tokener *tok = json_tokener_new_ex(INT_MAX); 523 json_tokener *tok = json_tokener_new_ex(INT_MAX);
524 json_object *obj = json_tokener_parse_ex(tok, reply->payload, -1); 524 json_object *obj = json_tokener_parse_ex(tok, reply->payload, -1);
525 enum json_tokener_error err = json_tokener_get_error(tok);
525 json_tokener_free(tok); 526 json_tokener_free(tok);
526 if (obj == NULL) { 527 if (obj == NULL || err != json_tokener_success) {
527 if (!quiet) { 528 if (!quiet) {
528 fprintf(stderr, "ERROR: Could not parse json response from" 529 sway_log(SWAY_ERROR, "failed to parse payload as json: %s",
529 " ipc. This is a bug in sway."); 530 json_tokener_error_desc(err));
530 ret = 1; 531 ret = 1;
531 } 532 }
532 break; 533 break;