diff options
author | Shaun Verch <shaun.verch@10gen.com> | 2013-03-12 16:31:42 -0700 |
---|---|---|
committer | Dan Pasette <dan@10gen.com> | 2013-06-18 12:40:47 -0400 |
commit | 10409c353696df0d07151cfc13d7c2baebafe8a6 (patch) | |
tree | cabc32d83c7464464cb9d5cee18116d70bc259ef | |
parent | aa2d926ae5a1cd8bc80bc843529bb1a1d7262b24 (diff) | |
download | mongo-10409c353696df0d07151cfc13d7c2baebafe8a6.tar.gz |
SERVER-8952 Add argument type checking to Timestamp constructor in Javascript shell
-rw-r--r-- | src/mongo/scripting/sm_db.cpp | 6 | ||||
-rw-r--r-- | src/mongo/scripting/v8_db.cpp | 6 |
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 ) |