summaryrefslogtreecommitdiff
path: root/src/mongo/db/namespace_string-inl.h
diff options
context:
space:
mode:
authorRobert Guo <robert.guo@10gen.com>2016-03-22 17:10:50 -0400
committerRobert Guo <robert.guo@10gen.com>2016-03-29 13:08:43 -0400
commite242b49373f0a9ee39f2b02f1a766a84c2c869b6 (patch)
tree3eaf08b0a85cbfde4b041f944001232d5e55e6e6 /src/mongo/db/namespace_string-inl.h
parentea07e34466f14b127ac97f58ec6a40e9e52ebbd5 (diff)
downloadmongo-e242b49373f0a9ee39f2b02f1a766a84c2c869b6.tar.gz
SERVER-22577 disallow creation of databases containing $ on mmapv1
Diffstat (limited to 'src/mongo/db/namespace_string-inl.h')
-rw-r--r--src/mongo/db/namespace_string-inl.h6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/mongo/db/namespace_string-inl.h b/src/mongo/db/namespace_string-inl.h
index 8e8808fb9b8..7bb98f81086 100644
--- a/src/mongo/db/namespace_string-inl.h
+++ b/src/mongo/db/namespace_string-inl.h
@@ -54,7 +54,7 @@ inline bool NamespaceString::special(StringData ns) {
return !normal(ns) || ns.substr(ns.find('.')).startsWith(".system.");
}
-inline bool NamespaceString::validDBName(StringData db) {
+inline bool NamespaceString::validDBName(StringData db, DollarInDbNameBehavior behavior) {
if (db.size() == 0 || db.size() > 64)
return false;
@@ -67,6 +67,10 @@ inline bool NamespaceString::validDBName(StringData db) {
case ' ':
case '"':
return false;
+ case '$':
+ if (behavior == DollarInDbNameBehavior::Disallow)
+ return false;
+ continue;
#ifdef _WIN32
// We prohibit all FAT32-disallowed characters on Windows
case '*':