lix/src
Robert Hensing d038a67bd3 Fix segfault or stack overflow caused by large derivation fields
This removes a dynamic stack allocation, making the derivation
unparsing logic robust against overflows when large strings are
added to a derivation.
Overflow behavior depends on the platform and stack configuration.

For instance, x86_64-linux/glibc behaves as (somewhat) expected:

$ (ulimit -s 20000; nix-instantiate tests/lang/eval-okay-big-derivation-attr.nix)
error: stack overflow (possible infinite recursion)

$ (ulimit -s 40000; nix-instantiate tests/lang/eval-okay-big-derivation-attr.nix)
error: expression does not evaluate to a derivation (or a set or list of those)

However, on aarch64-darwin:

$ nix-instantiate big-attr.nix                                                                                                                                                                                                                                                       ~
zsh: segmentation fault  nix-instantiate big-attr.nix

This indicates a slight flaw in the single stack protection page
approach that is not encountered with normal stack frames.
2022-01-19 15:21:56 +01:00
..
build-remote build-remote: Implicitly add the 'builtin' system type to all machines 2021-10-27 14:25:13 +02:00
libcmd Add Installable::toDrvPaths() 2022-01-18 17:28:18 +01:00
libexpr allow modifying lockfile commit msg with nix config option 2022-01-18 16:10:27 -07:00
libfetchers Get rid of std::shared_ptr<std::string> and ref<std::string> 2022-01-18 11:12:30 +01:00
libmain Respect /etc/hosts 2021-12-13 19:37:30 +01:00
libstore Fix segfault or stack overflow caused by large derivation fields 2022-01-19 15:21:56 +01:00
libutil Merge pull request #5906 from pennae/primops-optimization 2022-01-18 19:43:28 +01:00
nix Merge pull request #5918 from tweag/tty-logs 2022-01-18 19:42:01 +01:00
nix-build Merge pull request #5812 from pennae/small-perf-improvements 2022-01-17 19:49:52 +01:00
nix-channel nix-channel: use nix-env -i --remove-all to upgrade 2021-07-25 12:00:00 +00:00
nix-collect-garbage Initialize plugins after handling initial command line flags 2021-02-24 08:22:17 -05:00
nix-copy-closure copyPaths: Pass store by reference 2021-07-22 09:59:51 +02:00
nix-env Check for --meta before emitting it for --json 2022-01-06 14:40:02 -08:00
nix-instantiate Merge pull request #5428 from kreisys/add-pos-to-json-type-error 2021-11-15 07:57:46 -06:00
nix-store nix-store --serve: pass on settings.keepFailed from SSH store 2021-08-31 13:11:46 +02:00
nlohmann Install nlohmann_json headers 2021-11-11 11:05:44 +01:00
resolve-system-dependencies Apply OS checks to host platform, not build 2021-06-23 15:00:36 +00:00
toml11 Replace cpptoml with toml11 2021-12-17 22:03:33 +01:00