changeset d69720504203 in /z/repo/m5
details: http://repo.m5sim.org/m5?cmd=changeset;node=d69720504203
description:
stats: ensure that stat names are valid
diffstat:
src/base/statistics.cc | 34 ++++++++++++++++++++++++++++++++++
1 files changed, 34 insertions(+), 0 deletions(-)
diffs (47 lines):
diff -r acf4b902c02e -r d69720504203 src/base/statistics.cc
--- a/src/base/statistics.cc Wed Apr 20 19:07:45 2011 -0700
+++ b/src/base/statistics.cc Wed Apr 20 19:07:46 2011 -0700
@@ -138,9 +138,43 @@
{
}
+bool
+validateStatName(const string &name)
+{
+ if (name.empty())
+ return false;
+
+ vector<string> vec;
+ tokenize(vec, name, '.');
+ vector<string>::const_iterator item = vec.begin();
+ while (item != vec.end()) {
+ if (item->empty())
+ return false;
+
+ string::const_iterator c = item->begin();
+
+ // The first character is different
+ if (!isalpha(*c) && *c != '_')
+ return false;
+
+ // The rest of the characters have different rules.
+ while (++c != item->end()) {
+ if (!isalnum(*c) && *c != '_')
+ return false;
+ }
+
+ ++item;
+ }
+
+ return true;
+}
+
void
Info::setName(const string &name)
{
+ if (!validateStatName(name))
+ panic("invalid stat name '%s'", name);
+
pair<NameMapType::iterator, bool> p =
nameMap().insert(make_pair(name, this));
_______________________________________________
m5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/m5-dev