about summary refs log tree commit diff
path: root/src/libexpr/eval.cc
diff options
context:
space:
mode:
authorTuomas Tynkkynen <tuomas@tuxera.com>2018-04-03T12·27+0300
committerTuomas Tynkkynen <tuomas@tuxera.com>2018-04-03T12·54+0300
commitaf86132e1afa65b4b466af3ea9c7084836c91ee0 (patch)
tree981540a89d072525f59bfaea389bb8950859e267 /src/libexpr/eval.cc
parent3fbaa230a23ef47100eb1f117008a1cee85fcf5e (diff)
libexpr: Make unsafeGetAttrPos not crash on noPos
Currently e.g. `builtins.unsafeGetAttrPos "abort" builtins` will
eventually segfault because pos->file is an unset Symbol.

Found by afl-fuzz.
Diffstat (limited to 'src/libexpr/eval.cc')
-rw-r--r--src/libexpr/eval.cc2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/libexpr/eval.cc b/src/libexpr/eval.cc
index 37b977736e..8548990795 100644
--- a/src/libexpr/eval.cc
+++ b/src/libexpr/eval.cc
@@ -628,7 +628,7 @@ void EvalState::mkThunk_(Value & v, Expr * expr)
 
 void EvalState::mkPos(Value & v, Pos * pos)
 {
-    if (pos) {
+    if (pos && pos->file.set()) {
         mkAttrs(v, 3);
         mkString(*allocAttr(v, sFile), pos->file);
         mkInt(*allocAttr(v, sLine), pos->line);