diff options
author | Bernard Normier <bernard@zeroc.com> | 2014-07-10 16:51:36 -0400 |
---|---|---|
committer | Bernard Normier <bernard@zeroc.com> | 2014-07-10 16:51:36 -0400 |
commit | 7f767642e79e2775a958781011f13e3d1710c7bd (patch) | |
tree | fdb3eb1f826305d0bf3dd659d70c3930001f80c0 /cpp/src/Freeze | |
parent | ICE-5573 - .NET TimeoutException ignores Dispatcher (diff) | |
download | ice-7f767642e79e2775a958781011f13e3d1710c7bd.tar.bz2 ice-7f767642e79e2775a958781011f13e3d1710c7bd.tar.xz ice-7f767642e79e2775a958781011f13e3d1710c7bd.zip |
Fixed ICE-5379, Object Adapter should reject null servant, in C++, Java, C# and JS
Diffstat (limited to 'cpp/src/Freeze')
-rw-r--r-- | cpp/src/Freeze/BackgroundSaveEvictorI.cpp | 1 | ||||
-rw-r--r-- | cpp/src/Freeze/EvictorI.cpp | 2 | ||||
-rw-r--r-- | cpp/src/Freeze/EvictorI.h | 9 | ||||
-rw-r--r-- | cpp/src/Freeze/TransactionalEvictorI.cpp | 1 |
4 files changed, 11 insertions, 2 deletions
diff --git a/cpp/src/Freeze/BackgroundSaveEvictorI.cpp b/cpp/src/Freeze/BackgroundSaveEvictorI.cpp index 52c3a64969f..1da527561e3 100644 --- a/cpp/src/Freeze/BackgroundSaveEvictorI.cpp +++ b/cpp/src/Freeze/BackgroundSaveEvictorI.cpp @@ -233,6 +233,7 @@ Ice::ObjectPrx Freeze::BackgroundSaveEvictorI::addFacet(const ObjectPtr& servant, const Identity& ident, const string& facet) { checkIdentity(ident); + checkServant(servant); DeactivateController::Guard deactivateGuard(_deactivateController); ObjectStore<BackgroundSaveEvictorElement>* store = findStore(facet, _createDb); diff --git a/cpp/src/Freeze/EvictorI.cpp b/cpp/src/Freeze/EvictorI.cpp index 626fbd47231..c9c4be90440 100644 --- a/cpp/src/Freeze/EvictorI.cpp +++ b/cpp/src/Freeze/EvictorI.cpp @@ -275,8 +275,6 @@ Freeze::EvictorIBase::locate(const Current& current, LocalObjectPtr& cookie) } - - void Freeze::EvictorIBase::initialize(const Identity& ident, const string& facet, const ObjectPtr& servant) { diff --git a/cpp/src/Freeze/EvictorI.h b/cpp/src/Freeze/EvictorI.h index 8995b76da29..ec2792fe541 100644 --- a/cpp/src/Freeze/EvictorI.h +++ b/cpp/src/Freeze/EvictorI.h @@ -342,6 +342,15 @@ checkIdentity(const Ice::Identity& ident) } } +inline void +checkServant(const Ice::ObjectPtr& servant) +{ + if(servant == 0) + { + throw Ice::IllegalServantException(__FILE__, __LINE__, "cannot add null servant to Freeze Evictor"); + } +} + } #endif diff --git a/cpp/src/Freeze/TransactionalEvictorI.cpp b/cpp/src/Freeze/TransactionalEvictorI.cpp index c41531f34ae..46680e0ee0f 100644 --- a/cpp/src/Freeze/TransactionalEvictorI.cpp +++ b/cpp/src/Freeze/TransactionalEvictorI.cpp @@ -137,6 +137,7 @@ ObjectPrx Freeze::TransactionalEvictorI::addFacet(const ObjectPtr& servant, const Identity& ident, const string& facet) { checkIdentity(ident); + checkServant(servant); DeactivateController::Guard deactivateGuard(_deactivateController); ObjectStore<TransactionalEvictorElement>* store = findStore(facet, _createDb); |