Don't abort on maximum number of JSON stacks: return ENOMEM. Eventually

this will need to be re-written to be expandable.
This commit is contained in:
kristapsdz committed 2020-03-27 20:18:53 +00:00
1 parent 9b7f5c4f70
commit 719decfc86
1 file changed
+15 -12
+15 -12
View File
@@ -320,15 +320,16 @@ kjson_arrayp_open(struct kjsonreq *r, const char *key)
{
enum kcgi_err er;
if (r->stackpos >= KJSON_STACK_MAX - 1) {
XWARNX("maximum json stack size exceeded");
return KCGI_ENOMEM;
}
if ((er = kjson_check(r, key)) != KCGI_OK)
return er;
if ((er = kcgi_writer_putc(r->arg, '[')) != KCGI_OK)
return er;
if (r->stackpos >= KJSON_STACK_MAX - 1) {
XWARNX("maximum json stack size exceeded");
abort();
}
r->stack[++r->stackpos].elements = 0;
r->stack[r->stackpos].type = KJSON_ARRAY;
return KCGI_OK;
@@ -406,15 +407,16 @@ kjson_stringp_open(struct kjsonreq *r, const char *key)
{
enum kcgi_err er;
if (r->stackpos >= KJSON_STACK_MAX - 1) {
XWARNX("maximum json stack size exceeded");
return KCGI_ENOMEM;
}
if ((er = kjson_check(r, key)) != KCGI_OK)
return er;
if ((er = kcgi_writer_putc(r->arg, '"')) != KCGI_OK)
return er;
if (r->stackpos >= KJSON_STACK_MAX - 1) {
XWARNX("maximum json stack size exceeded");
abort();
}
r->stack[++r->stackpos].elements = 0;
r->stack[r->stackpos].type = KJSON_STRING;
return KCGI_OK;
@@ -446,15 +448,16 @@ kjson_objp_open(struct kjsonreq *r, const char *key)
{
enum kcgi_err er;
if (r->stackpos >= KJSON_STACK_MAX - 1) {
XWARNX("maximum json stack size exceeded");
return KCGI_ENOMEM;
}
if ((er = kjson_check(r, key)) != KCGI_OK)
return er;
if ((er = kcgi_writer_putc(r->arg, '{')) != KCGI_OK)
return er;
if (r->stackpos >= KJSON_STACK_MAX - 1) {
XWARNX("maximum json stack size exceeded");
abort();
}
r->stack[++r->stackpos].elements = 0;
r->stack[r->stackpos].type = KJSON_OBJECT;
return KCGI_OK;