mirror of
https://github.com/NixOS/nix.git
synced 2025-11-17 16:02:43 +01:00
Merge pull request #5875 from hercules-ci/fix-large-drv-field-stack-overflow
Fix segfault or stack overflow caused by large derivation fields
This commit is contained in:
commit
076945c808
3 changed files with 23 additions and 1 deletions
13
tests/big-derivation-attr.nix
Normal file
13
tests/big-derivation-attr.nix
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
let
|
||||
sixteenBytes = "0123456789abcdef";
|
||||
times16 = s: builtins.concatStringsSep "" [s s s s s s s s s s s s s s s s];
|
||||
exp = n: x: if n == 1 then x else times16 (exp (n - 1) x);
|
||||
sixteenMegabyte = exp 6 sixteenBytes;
|
||||
in
|
||||
assert builtins.stringLength sixteenMegabyte == 16777216;
|
||||
derivation {
|
||||
name = "big-derivation-attr";
|
||||
builder = "/x";
|
||||
system = "y";
|
||||
bigAttr = sixteenMegabyte;
|
||||
}
|
||||
|
|
@ -25,3 +25,9 @@ if test "$outPath" != "/foo/lfy1s6ca46rm5r6w4gg9hc0axiakjcnm-dependencies.drv";
|
|||
echo "hashDerivationModulo appears broken, got $outPath"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
outPath="$(NIX_REMOTE=local?store=/foo\&real=$TEST_ROOT/real-store nix-instantiate --readonly-mode big-derivation-attr.nix)"
|
||||
if test "$outPath" != "/foo/xxiwa5zlaajv6xdjynf9yym9g319d6mn-big-derivation-attr.drv"; then
|
||||
echo "big-derivation-attr.nix hash appears broken, got $outPath. Memory corruption in large drv attr?"
|
||||
exit 1
|
||||
fi
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue