fix: use sane value for json_tokener max_depth

INT_MAX causes a NULL pointer if there is not enough memory available to
fit (INT_MAX * sizeof(struct json_tokener_srec)).
This commit is contained in:
Sefa Eyeoglu 2021-10-21 18:22:50 +02:00 committed by Simon Ser
parent 944d7031c5
commit 96baef8ae9

View file

@ -1,4 +1,8 @@
#define _POSIX_C_SOURCE 200809L #define _POSIX_C_SOURCE 200809L
// arbitrary number, it's probably sufficient, higher number = more memory usage
#define JSON_MAX_DEPTH 512
#include <limits.h> #include <limits.h>
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
@ -481,7 +485,7 @@ int main(int argc, char **argv) {
char *resp = ipc_single_command(socketfd, type, command, &len); char *resp = ipc_single_command(socketfd, type, command, &len);
// pretty print the json // pretty print the json
json_tokener *tok = json_tokener_new_ex(INT_MAX); json_tokener *tok = json_tokener_new_ex(JSON_MAX_DEPTH);
if (tok == NULL) { if (tok == NULL) {
sway_log(SWAY_ERROR, "failed allocating json_tokener"); sway_log(SWAY_ERROR, "failed allocating json_tokener");
ret = 1; ret = 1;
@ -525,7 +529,7 @@ int main(int argc, char **argv) {
break; break;
} }
json_tokener *tok = json_tokener_new_ex(INT_MAX); json_tokener *tok = json_tokener_new_ex(JSON_MAX_DEPTH);
if (tok == NULL) { if (tok == NULL) {
sway_log(SWAY_ERROR, "failed allocating json_tokener"); sway_log(SWAY_ERROR, "failed allocating json_tokener");
ret = 1; ret = 1;