summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShaun Verch <shaun.verch@10gen.com>2013-03-12 16:31:42 -0700
committerDan Pasette <dan@10gen.com>2013-06-18 12:40:47 -0400
commit10409c353696df0d07151cfc13d7c2baebafe8a6 (patch)
treecabc32d83c7464464cb9d5cee18116d70bc259ef
parentaa2d926ae5a1cd8bc80bc843529bb1a1d7262b24 (diff)
downloadmongo-10409c353696df0d07151cfc13d7c2baebafe8a6.tar.gz
SERVER-8952 Add argument type checking to Timestamp constructor in Javascript shell
-rw-r--r--src/mongo/scripting/sm_db.cpp6
-rw-r--r--src/mongo/scripting/v8_db.cpp6
2 files changed, 12 insertions, 0 deletions
diff --git a/src/mongo/scripting/sm_db.cpp b/src/mongo/scripting/sm_db.cpp
index 3c53a85768a..f9505b77d60 100644
--- a/src/mongo/scripting/sm_db.cpp
+++ b/src/mongo/scripting/sm_db.cpp
@@ -1294,6 +1294,12 @@ zzz
c.setProperty( obj, "i", c.toval( 0.0 ) );
}
else {
+ smuassert( cx,
+ "Timestamp time must be a number",
+ JSVAL_IS_NUMBER( argv[ 0 ] ) );
+ smuassert( cx,
+ "Timestamp increment must be a number",
+ JSVAL_IS_NUMBER( argv[ 1 ] ) );
long long t = parseLL(c.toString(argv[0]).c_str());
long long largestVal = ((2039LL-1970LL) *365*24*60*60); //seconds between 1970=2038
smuassert( cx,
diff --git a/src/mongo/scripting/v8_db.cpp b/src/mongo/scripting/v8_db.cpp
index 16b565c42a1..971ec69b194 100644
--- a/src/mongo/scripting/v8_db.cpp
+++ b/src/mongo/scripting/v8_db.cpp
@@ -618,6 +618,12 @@ namespace mongo {
it->ForceSet(scope->v8StringData("i"), v8::Number::New(0));
}
else if (args.Length() == 2) {
+ if (!args[0]->IsNumber()) {
+ return v8AssertionException("Timestamp time must be a number");
+ }
+ if (!args[1]->IsNumber()) {
+ return v8AssertionException("Timestamp increment must be a number");
+ }
int64_t t = args[0]->IntegerValue();
int64_t largestVal = ((2039LL-1970LL) *365*24*60*60); //seconds between 1970-2038
if( t > largestVal )