From b936cb2c97d3c024e243c089ecb3190e4ff68f4c Mon Sep 17 00:00:00 2001 From: Aaron Date: Fri, 13 Mar 2009 12:07:00 -0400 Subject: [PATCH] objcheck validates every bson object read from a message --- db/db.cpp | 2 +- db/dbmessage.h | 5 +++++ db/instance.cpp | 4 ---- util/message.cpp | 2 ++ 4 files changed, 8 insertions(+), 5 deletions(-) diff --git a/db/db.cpp b/db/db.cpp index 81c1f420f41..ffe3aed04b0 100644 --- a/db/db.cpp +++ b/db/db.cpp @@ -32,7 +32,7 @@ namespace mongo { - extern bool objcheck, quiet, quota, cpu; + extern bool quiet, quota, cpu; bool useJNI = true; /* only off if --nocursors which is for debugging. */ diff --git a/db/dbmessage.h b/db/dbmessage.h index 7d0410f0116..6f8b54f32f1 100644 --- a/db/dbmessage.h +++ b/db/dbmessage.h @@ -33,6 +33,8 @@ namespace mongo { list of marshalled JSObjects; */ + extern bool objcheck; + #pragma pack(1) struct QueryResult : public MsgData { enum { @@ -119,6 +121,9 @@ namespace mongo { massert( "Invalid object size", js.objsize() > 3 ); massert( "Next object larger than available space", js.objsize() < ( theEnd - data ) ); + if ( objcheck && !js.valid() ) { + massert("bad object in message", false); + } nextjsobj += js.objsize(); if ( nextjsobj >= theEnd ) nextjsobj = 0; diff --git a/db/instance.cpp b/db/instance.cpp index 06eb80510f6..7e2556c0243 100644 --- a/db/instance.cpp +++ b/db/instance.cpp @@ -34,7 +34,6 @@ namespace mongo { int nloggedsome = 0; #define LOGSOME if( ++nloggedsome < 1000 || nloggedsome % 100 == 0 ) - bool objcheck = false; bool quota = false; bool slave = false; bool master = false; // true means keep an op log @@ -434,9 +433,6 @@ namespace mongo { while ( d.moreJSObjs() ) { BSONObj js = d.nextJsObj(); - if ( objcheck && !js.valid() ) { - uassert("insert: bad object from client", false); - } theDataFileMgr.insert(ns, js); logOp("i", ns, js); diff --git a/util/message.cpp b/util/message.cpp index 2d2220ba172..3b6c65e8374 100644 --- a/util/message.cpp +++ b/util/message.cpp @@ -27,6 +27,8 @@ namespace mongo { + bool objcheck = false; + // if you want trace output: #define mmm(x)