From: Gunnar Beutner Date: Wed, 23 Jan 2013 08:57:06 +0000 (+0100) Subject: Properly deal with I/O errors when parsing config files. X-Git-Tag: v0.0.2~679 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=153ab330748290bd83b996f0b14e6a0112f036fc;p=icinga2 Properly deal with I/O errors when parsing config files. Fixes #3152 --- diff --git a/lib/config/configcompiler.cpp b/lib/config/configcompiler.cpp index dfd06e987..29102788c 100644 --- a/lib/config/configcompiler.cpp +++ b/lib/config/configcompiler.cpp @@ -55,7 +55,7 @@ ConfigCompiler::~ConfigCompiler(void) */ size_t ConfigCompiler::ReadInput(char *buffer, size_t max_size) { - m_Input->read(buffer, max_size); + m_Input->readsome(buffer, max_size); return static_cast(m_Input->gcount()); } @@ -122,6 +122,8 @@ void ConfigCompiler::HandleLibrary(const String& library) vector ConfigCompiler::CompileStream(const String& path, istream *stream) { + stream->exceptions(istream::failbit | istream::badbit); + ConfigCompiler ctx(path, stream); ctx.Compile(); return ctx.GetResult();