From: Michal 'vorner' Vaner Date: Tue, 11 Dec 2012 14:20:11 +0000 (+0100) Subject: [2428] Test and fix error handling in $INCLUDE X-Git-Tag: bind10-1.0.0-beta-release~24^2~9 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=45e97b85271f437e9f3897fc78e82cbac8f2368a;p=thirdparty%2Fkea.git [2428] Test and fix error handling in $INCLUDE --- diff --git a/src/lib/dns/master_loader.cc b/src/lib/dns/master_loader.cc index bf28ea29f5..40710c29a7 100644 --- a/src/lib/dns/master_loader.cc +++ b/src/lib/dns/master_loader.cc @@ -81,9 +81,7 @@ public: std::string error; if (!lexer_.pushSource(filename.c_str(), &error)) { if (initialized_) { - // $INCLUDE file - reportError(lexer_.getSourceName(), lexer_.getSourceLine(), - error); + isc_throw(InternalException, error.c_str()); } else { // Top-level file reportError("", 0, error); @@ -116,7 +114,7 @@ public: void doInclude() { // First, get the filename to include const MasterToken::StringRegion - filename(lexer_.getNextToken(MasterLexer::QSTRING). + filename(lexer_.getNextToken(MasterToken::QSTRING). getStringRegion()); // TODO: Handle the case where there's Name after the diff --git a/src/lib/dns/tests/master_loader_unittest.cc b/src/lib/dns/tests/master_loader_unittest.cc index 4860badee4..e79e2f8ca7 100644 --- a/src/lib/dns/tests/master_loader_unittest.cc +++ b/src/lib/dns/tests/master_loader_unittest.cc @@ -282,6 +282,10 @@ struct ErrorCase { // Check the unknown directive. The rest looks like ordinary RR, // so we see the $ is actually special. { "$UNKNOWN 3600 IN A 192.0.2.1", "Unknown $ directive" }, + { "$INCLUDE", "Missing include path" }, + { "$INCLUDE /file/not/found", "Include file not found" }, + { "$INCLUDE /file/not/found and here goes bunch of garbage", + "Include file not found and garbage at the end of line" }, { NULL, NULL } };