about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/libstore/globals.cc4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/libstore/globals.cc b/src/libstore/globals.cc
index bfb40a07a237..c75ebdd0e36b 100644
--- a/src/libstore/globals.cc
+++ b/src/libstore/globals.cc
@@ -188,6 +188,10 @@ string Settings::pack()
 {
     string s;
     foreach (SettingsMap::iterator, i, settings) {
+        if (i->first.find('\n') != string::npos ||
+            i->first.find('=') != string::npos ||
+            i->second.find('\n') != string::npos)
+            throw Error("illegal option name/value");
         s += i->first; s += '='; s += i->second; s += '\n';
     }
     return s;