Skip to content

Specific use of !!binary causes TypeError: Cannot read properties of undefined (reading 'buffer') when .toJS()/.toJSON() #610

@cxcorp

Description

@cxcorp

Describe the bug
The following YAML causes an unhandled error when calling parse() or parseDocument().toJS(), and the error message does not sound like it is intended behavior.

? ? !!binary ? !!binary

To Reproduce

Welcome to Node.js v22.14.0.
Type ".help" for more information.
> const {parse} = require("yaml")
undefined
> parse('? ? !!binary ? !!binary')
Uncaught TypeError: Cannot read properties of undefined (reading 'buffer')
    at Object.stringify (yaml-fuzz/node_modules/yaml/dist/schema/yaml-1.1/binary.js:43:51)
    at Object.stringify (yaml-fuzz/node_modules/yaml/dist/stringify/stringify.js:120:18)
    at Object.stringifyPair (yaml-fuzz/node_modules/yaml/dist/stringify/stringifyPair.js:34:25)
    at Pair.toString (yaml-fuzz/node_modules/yaml/dist/nodes/Pair.js:33:29)
    at Object.stringify (yaml-fuzz/node_modules/yaml/dist/stringify/stringify.js:95:21)
    at stringifyFlowCollection (yaml-fuzz/node_modules/yaml/dist/stringify/stringifyCollection.js:106:29)
    at Object.stringifyCollection (yaml-fuzz/node_modules/yaml/dist/stringify/stringifyCollection.js:10:12)
    at YAMLMap.toString (yaml-fuzz/node_modules/yaml/dist/nodes/YAMLMap.js:136:36)
    at stringifyKey (yaml-fuzz/node_modules/yaml/dist/nodes/addPairToJSMap.js:51:28)
> (node:1635) [TAG_RESOLVE_FAILED] YAMLWarning: Unresolved tag: tag:yaml.org,2002:binary at line 1, column 5:

? ? !!binary ? !!binary
    ^^^^^^^^

(Use `node --trace-warnings ...` to show where the warning was created)
(node:1635) Warning: Keys with collection values will be stringified due to JS Object restrictions: "". Set mapAsMap: true to use object keys.

Expected behaviour
I would expect it to return the JS/JSON representation, or throw a YAMLParseError. I'm not quite sure what the expected value is as I just bumped into this error while fuzzing yaml.

Versions (please complete the following information):

  • Environment: Node v22.14.0
  • yaml: 2.7.0

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions