mirror of
https://github.com/bdnugget/kcgi.git
synced 2026-11-07 05:47:27 +00:00
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:
1 parent
9b7f5c4f70
commit
719decfc86
1 file changed
+15
-12
+15
-12
@@ -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;
|
||||
|
||||
Reference in new issue
Block a user