1
1
Fork 0
mirror of https://github.com/NixOS/nix.git synced 2025-11-24 11:19:35 +01:00

libexpr: fix stack overflow in toJSON on deeply nested structures

Similar to the deepSeq fix, toJSON on deeply nested structures caused
an uncontrolled OS-level stack overflow.

Fix by adding call depth tracking to printValueAsJSON.
This commit is contained in:
Robert Hensing 2025-11-22 00:09:45 +01:00
parent a812b6c6e6
commit c7e1c612eb
5 changed files with 109 additions and 0 deletions

View file

@ -0,0 +1,8 @@
# Test that toJSON on a deeply nested structure produces a controlled
# stack overflow error rather than a segfault.
let
long = builtins.genList (x: x) 100000;
reverseLinkedList = builtins.foldl' (tail: head: { inherit head tail; }) null long;
in
builtins.toJSON reverseLinkedList