From eb7849e3a281511a59abf72ae5c3133f903bbaab Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Tue, 31 Jul 2012 18:50:32 -0400 Subject: Prevent an injection attack in passing untrusted options to substituters --- src/libstore/globals.cc | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'src') 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; -- cgit 1.4.1