aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenjamin Kramer <benny.kra@googlemail.com>2011-11-15 12:54:53 +0000
committerBenjamin Kramer <benny.kra@googlemail.com>2011-11-15 12:54:53 +0000
commit037ad1b8f00b80aa76e73e3118133e9a59fd177e (patch)
tree47d7fd428724d0ac7ba58cfad171f0db13052d53
parentdce6327160a6e333137b34cce77e2dfc2cd5aab6 (diff)
Validate DiagGroup names in TableGen, they're used as command line arguments so we don't want shell meta chars in there.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144645 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--utils/TableGen/ClangDiagnosticsEmitter.cpp4
1 files changed, 4 insertions, 0 deletions
diff --git a/utils/TableGen/ClangDiagnosticsEmitter.cpp b/utils/TableGen/ClangDiagnosticsEmitter.cpp
index 7a5eb1d711..4435fa735b 100644
--- a/utils/TableGen/ClangDiagnosticsEmitter.cpp
+++ b/utils/TableGen/ClangDiagnosticsEmitter.cpp
@@ -303,6 +303,10 @@ void ClangDiagGroupsEmitter::run(raw_ostream &OS) {
OS << " { ";
OS << I->first.size() << ", ";
OS << "\"";
+ if (I->first.find_first_not_of("abcdefghijklmnopqrstuvwxyz"
+ "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
+ "0123456789!@#$%^*-+=:?")!=std::string::npos)
+ throw "Invalid character in diagnostic group '" + I->first + "'";
OS.write_escaped(I->first) << "\","
<< std::string(MaxLen-I->first.size()+1, ' ');