summaryrefslogtreecommitdiff
path: root/server/src/templateheaderparser.cc
diff options
context:
space:
mode:
authordeva <deva>2009-07-30 09:47:03 +0000
committerdeva <deva>2009-07-30 09:47:03 +0000
commit7648d777302595d819e2a34e41bbda157392667b (patch)
treef97a75e7f87f8156016a043bfd22f7508d3f48af /server/src/templateheaderparser.cc
parent706e18fae5713e070d6379f1ec9da1757b338f4e (diff)
Make sure we don't hang in an infinite loop when encountering malformed macro/template files.
Diffstat (limited to 'server/src/templateheaderparser.cc')
-rw-r--r--server/src/templateheaderparser.cc6
1 files changed, 4 insertions, 2 deletions
diff --git a/server/src/templateheaderparser.cc b/server/src/templateheaderparser.cc
index 8698e05..0b274ee 100644
--- a/server/src/templateheaderparser.cc
+++ b/server/src/templateheaderparser.cc
@@ -94,11 +94,13 @@ TemplateHeaderParser::~TemplateHeaderParser()
void TemplateHeaderParser::startTag(std::string name, std::map< std::string, std::string> attributes)
{
- // Create template and enable parsing of queries, maps and widgets
+ if(t) return;
+
if(name == "template") {
- assert(!t); // A Template has already been allocated, cannot create template!
t = new Template();
t->attributes = attributes;
+ } else {
+ throw Exception("Missing root tag 'template' - found '" + name + "'");
}
}