fastify / fastify/fast-json-stringify

Multiple fields with anyOf and self ref causes Maximum call stack size exceeded

Open
#724 1 comment 1 reaction 0 assignees View on GitHub
bug
Dominant language
JavaScript
Stars
3.7k
Forks
226
Avg merge
1d 59m
Merged PRs (30d)
3

Description

### Prerequisites

- [X] I have written a descriptive issue title
- [X] I have searched existing issues to ensure the bug has not already been reported

### Fastify version

4.28.0 (latest)

### Plugin version

5.16.1 (latest)

### Node.js version

20.11.0 (LTS)

### Operating system

macOS Sonoma 14.5

### Description

When defining a schema with at least two anyOf fields or oneOf fields with self ref like so :

```
import fastJson from 'fast-json-stringify';

const schema = {
$schema: 'http://json-schema.org/draft-07/schema#',
type: 'object',
properties: {
field: { type: 'string' },
field1: { anyOf: [{ $ref: '#' }, { type: 'null' }] },
field2: { anyOf: [{ $ref: '#' }, { type: 'null' }] },
},
};

fastJson(schema.valueOf());

```

I'm getting this following error :

```
RangeError: Maximum call stack size exceeded

at RefResolver.#addSchema (../../node_modules/.pnpm/json-schema-ref-resolver@1.0.1/node_modules/json-schema-ref-resolver/index.js:143:14)
at RefResolver.#addSchema (../../node_modules/.pnpm/json-schema-ref-resolver@1.0.1/node_modules/json-schema-ref-resolver/index.js:165:24)
at RefResolver.#addSchema (../../node_modules/.pnpm/json-schema-ref-resolver@1.0.1/node_modules/json-schema-ref-resolver/index.js:165:24)
at RefResolver.#addSchema (../../node_modules/.pnpm/json-schema-ref-resolver@1.0.1/node_modules/json-schema-ref-resolver/index.js:165:24)
at RefResolver.#addSchema (../../node_modules/.pnpm/json-schema-ref-resolver@1.0.1/node_modules/json-schema-ref-resolver/index.js:165:24)
at RefResolver.addSchema (../../node_modules/.pnpm/json-schema-ref-resolver@1.0.1/node_modules/json-schema-ref-resolver/index.js:30:20)
at mergeLocations (../../node_modules/.pnpm/fast-json-stringify@5.16.1/node_modules/fast-json-stringify/index.js:433:23)
at buildOneOf (../../node_modules/.pnpm/fast-json-stringify@5.16.1/node_modules/fast-json-stringify/index.js:868:24)
at buildValue (../../node_modules/.pnpm/fast-json-stringify@5.16.1/node_modules/fast-json-stringify/index.js:979:12)
at buildInnerObject (../../node_modules/.pnpm/fast-json-stringify@5.16.1/node_modules/fast-json-stringify/index.js:380:11)
at buildObject (../../node_modules/.pnpm/fast-json-stringify@5.16.1/node_modules/fast-json-stringify/index.js:501:9)
at buildSingleTypeSerializer (../../node_modules/.pnpm/fast-json-stringify@5.16.1/node_modules/fast-json-stringify/index.js:768:24)
at buildValue (../../node_modules/.pnpm/fast-json-stringify@5.16.1/node_modules/fast-json-stringify/index.js:1010:13)
at buildOneOf (../../node_modules/.pnpm/fast-json-stringify@5.16.1/node_modules/fast-json-stringify/index.js:874:26)
at buildValue (../../node_modules/.pnpm/fast-json-stringify@5.16.1/node_modules/fast-json-stringify/index.js:979:12)
at buildInnerObject (../../node_modules/.pnpm/fast-json-stringify@5.16.1/node_modules/fast-json-stringify
```

(output truncated for readability)

Fastify fails to start when using this schema in routes

Is this kind of schema possible ? in my case, anyOf / oneOf + self reference & null are required.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.