diff options
author | William R. Otte <wotte@dre.vanderbilt.edu> | 2010-06-30 21:42:17 +0000 |
---|---|---|
committer | William R. Otte <wotte@dre.vanderbilt.edu> | 2010-06-30 21:42:17 +0000 |
commit | c7bf39aebdc22a3a7a389dbc5ce429b2259347c2 (patch) | |
tree | c9140e2473fed5087b5ff56195ec8ca4bc9491e0 | |
parent | b8d6c4801b02af8323e7e3f83edab97174af659d (diff) | |
download | ATCD-c7bf39aebdc22a3a7a389dbc5ce429b2259347c2.tar.gz |
Wed Jun 30 21:38:41 UTC 2010 William R. Otte <wotte@dre.vanderbilt.edu>
* DAnCE/LocalityManager/Interceptors/Best_Effort.cpp:
* DAnCE/LocalityManager/Interceptors/Standard_Error.cpp:
* ciao/Deployment/Interceptors/Deployment_Interceptors.cpp:
Better detection of bad any values passed in.
* DAnCE/LocalityManager/Scheduler/Events/Action_Base.cpp:
* DAnCE/LocalityManager/Scheduler/Events/Endpoint.cpp:
* DAnCE/LocalityManager/Scheduler/Events/Install.cpp:
* DAnCE/LocalityManager/Handler/Locality_Manager_Handler_Impl.cpp:
* ciao/Deployment/Handlers/Component_Handler.cpp:
* ciao/Deployment/Handlers/Container_Handler.cpp:
* ciao/Deployment/Handlers/Home_Handler.cpp:
* ciao/Deployment/Handlers/Homed_Component_Handler.cpp:
Earlier allocation of anys to ensure their state is valid
in the event of early exit due to exceptional conditions.
12 files changed, 92 insertions, 51 deletions
diff --git a/CIAO/ChangeLog b/CIAO/ChangeLog index 1cd933c1a98..34504e377f5 100644 --- a/CIAO/ChangeLog +++ b/CIAO/ChangeLog @@ -1,8 +1,28 @@ +Wed Jun 30 21:38:41 UTC 2010 William R. Otte <wotte@dre.vanderbilt.edu> + + * DAnCE/LocalityManager/Interceptors/Best_Effort.cpp: + * DAnCE/LocalityManager/Interceptors/Standard_Error.cpp: + * ciao/Deployment/Interceptors/Deployment_Interceptors.cpp: + + Better detection of bad any values passed in. + + * DAnCE/LocalityManager/Scheduler/Events/Action_Base.cpp: + * DAnCE/LocalityManager/Scheduler/Events/Endpoint.cpp: + * DAnCE/LocalityManager/Scheduler/Events/Install.cpp: + * DAnCE/LocalityManager/Handler/Locality_Manager_Handler_Impl.cpp: + * ciao/Deployment/Handlers/Component_Handler.cpp: + * ciao/Deployment/Handlers/Container_Handler.cpp: + * ciao/Deployment/Handlers/Home_Handler.cpp: + * ciao/Deployment/Handlers/Homed_Component_Handler.cpp: + + Earlier allocation of anys to ensure their state is valid + in the event of early exit due to exceptional conditions. + Wed Jun 30 20:34:42 UTC 2010 William R. Otte <wotte@dre.vanderbilt.edu> * DAnCE/LocalityManager/Handler/LocalityActivator_Impl.cpp: - Fix for crash on shutdown for windows. + Fix for crash on shutdown for windows. Wed Jun 30 16:05:10 UTC 2010 William R. Otte <wotte@dre.vanderbilt.edu> diff --git a/CIAO/DAnCE/LocalityManager/Handler/Locality_Manager_Handler_Impl.cpp b/CIAO/DAnCE/LocalityManager/Handler/Locality_Manager_Handler_Impl.cpp index 74f27a710c3..ad1abaa17ab 100644 --- a/CIAO/DAnCE/LocalityManager/Handler/Locality_Manager_Handler_Impl.cpp +++ b/CIAO/DAnCE/LocalityManager/Handler/Locality_Manager_Handler_Impl.cpp @@ -43,6 +43,12 @@ namespace DAnCE ::CORBA::ULong instanceRef, ::CORBA::Any_out instance_reference) { + CORBA::Any *outany (0); + ACE_NEW_THROW_EX (outany, + CORBA::Any (), + CORBA::NO_MEMORY ()); + instance_reference = outany; + #ifdef GEN_OSTREAM_OPS { std::ostringstream plan_stream; @@ -116,13 +122,7 @@ namespace DAnCE "LocalityManager from Activator\n"); } - CORBA::Any *outany (0); - ACE_NEW_THROW_EX (outany, - CORBA::Any (), - CORBA::NO_MEMORY ()); - (*outany) <<= lm_ref.in (); - - instance_reference = outany; + *instance_reference <<= lm_ref.in (); } void diff --git a/CIAO/DAnCE/LocalityManager/Interceptors/Best_Effort.cpp b/CIAO/DAnCE/LocalityManager/Interceptors/Best_Effort.cpp index a866730fff8..42eda96226e 100644 --- a/CIAO/DAnCE/LocalityManager/Interceptors/Best_Effort.cpp +++ b/CIAO/DAnCE/LocalityManager/Interceptors/Best_Effort.cpp @@ -30,7 +30,7 @@ namespace DAnCE const ::CORBA::Any &, const ::CORBA::Any &exception) { - if (&exception) + if (exception.type() != ::CORBA::_tc_null) { std::string result; DAnCE::Utility::stringify_exception_from_any (exception, @@ -49,7 +49,7 @@ namespace DAnCE ::CORBA::ULong connection, const ::CORBA::Any &exception) { - if (&exception) + if (exception.type() != ::CORBA::_tc_null) { std::string result; DAnCE::Utility::stringify_exception_from_any (exception, @@ -68,7 +68,7 @@ namespace DAnCE ::CORBA::ULong instance_index, const ::CORBA::Any &exception ) { - if (&exception) + if (exception.type() != ::CORBA::_tc_null) { std::string result; DAnCE::Utility::stringify_exception_from_any (exception, @@ -88,7 +88,7 @@ namespace DAnCE ::CORBA::ULong instance_index, const ::CORBA::Any & exception) { - if (&exception) + if (exception.type() != ::CORBA::_tc_null) { std::string result; DAnCE::Utility::stringify_exception_from_any (exception, @@ -108,7 +108,7 @@ namespace DAnCE ::CORBA::ULong instance_index, const ::CORBA::Any & exception) { - if (&exception) + if (exception.type() != ::CORBA::_tc_null) { std::string result; DAnCE::Utility::stringify_exception_from_any (exception, @@ -128,7 +128,7 @@ namespace DAnCE ::CORBA::ULong instance_index, const ::CORBA::Any & exception) { - if (&exception) + if (exception.type() != ::CORBA::_tc_null) { std::string result; DAnCE::Utility::stringify_exception_from_any (exception, diff --git a/CIAO/DAnCE/LocalityManager/Interceptors/Standard_Error.cpp b/CIAO/DAnCE/LocalityManager/Interceptors/Standard_Error.cpp index dabd733cbdc..9176403ee8e 100644 --- a/CIAO/DAnCE/LocalityManager/Interceptors/Standard_Error.cpp +++ b/CIAO/DAnCE/LocalityManager/Interceptors/Standard_Error.cpp @@ -30,7 +30,7 @@ namespace DAnCE const ::CORBA::Any &, const ::CORBA::Any &exception) { - if (&exception) + if (exception.type() != ::CORBA::_tc_null) { DANCE_ERROR (2, (LM_ERROR, DLINFO ACE_TEXT ("Standard_Error::instance_post_install - ") @@ -45,7 +45,7 @@ namespace DAnCE ::CORBA::ULong connection, const ::CORBA::Any &exception) { - if (&exception) + if (exception.type() != ::CORBA::_tc_null) { DANCE_ERROR (2, (LM_ERROR, DLINFO ACE_TEXT ("Standard_Error::instance_post_connect - ") @@ -60,7 +60,7 @@ namespace DAnCE ::CORBA::ULong instance_index, const ::CORBA::Any &exception ) { - if (&exception) + if (exception.type() != ::CORBA::_tc_null) { DANCE_ERROR (2, (LM_ERROR, DLINFO ACE_TEXT ("Standard_Error::instance_post_configured - ") @@ -76,7 +76,7 @@ namespace DAnCE ::CORBA::ULong instance_index, const ::CORBA::Any & exception) { - if (&exception) + if (exception.type() != ::CORBA::_tc_null) { DANCE_ERROR (2, (LM_ERROR, DLINFO ACE_TEXT ("Standard_Error::instance_post_activate - ") @@ -92,7 +92,7 @@ namespace DAnCE ::CORBA::ULong instance_index, const ::CORBA::Any & exception) { - if (&exception) + if (exception.type() != ::CORBA::_tc_null) { DANCE_ERROR (2, (LM_ERROR, DLINFO ACE_TEXT ("Standard_Error::instance_post_passivate - ") @@ -108,7 +108,7 @@ namespace DAnCE ::CORBA::ULong instance_index, const ::CORBA::Any & exception) { - if (&exception) + if (exception.type() != ::CORBA::_tc_null) { DANCE_ERROR (2, (LM_ERROR, DLINFO ACE_TEXT ("Standard_Error::instance_post_remove - ") diff --git a/CIAO/DAnCE/LocalityManager/Scheduler/Events/Action_Base.cpp b/CIAO/DAnCE/LocalityManager/Scheduler/Events/Action_Base.cpp index 57032f8ec2d..bf3d9ec7c81 100644 --- a/CIAO/DAnCE/LocalityManager/Scheduler/Events/Action_Base.cpp +++ b/CIAO/DAnCE/LocalityManager/Scheduler/Events/Action_Base.cpp @@ -12,6 +12,11 @@ namespace DAnCE const char *instance_type) : Deployment_Event (holder, name, instance_type) { + CORBA::Any *tmp; + ACE_NEW_THROW_EX (tmp, + ::CORBA::Any (), + CORBA::NO_MEMORY ()); + instance_excep_ = tmp; } Action_Base::~Action_Base (void) diff --git a/CIAO/DAnCE/LocalityManager/Scheduler/Events/Endpoint.cpp b/CIAO/DAnCE/LocalityManager/Scheduler/Events/Endpoint.cpp index b089defc0d8..a7497d91aa4 100644 --- a/CIAO/DAnCE/LocalityManager/Scheduler/Events/Endpoint.cpp +++ b/CIAO/DAnCE/LocalityManager/Scheduler/Events/Endpoint.cpp @@ -25,6 +25,11 @@ namespace DAnCE plan_ (plan), connectionRef_ (connectionRef) { + CORBA::Any *tmp; + ACE_NEW_THROW_EX (tmp, + ::CORBA::Any (), + CORBA::NO_MEMORY ()); + ref_ = tmp; } Endpoint_Reference::~Endpoint_Reference (void) diff --git a/CIAO/DAnCE/LocalityManager/Scheduler/Events/Install.cpp b/CIAO/DAnCE/LocalityManager/Scheduler/Events/Install.cpp index aa70d43de82..058f18aecda 100644 --- a/CIAO/DAnCE/LocalityManager/Scheduler/Events/Install.cpp +++ b/CIAO/DAnCE/LocalityManager/Scheduler/Events/Install.cpp @@ -25,6 +25,12 @@ namespace DAnCE plan_ (plan), instanceRef_ (instanceRef) { + CORBA::Any *tmp; + ACE_NEW_THROW_EX (tmp, + ::CORBA::Any (), + CORBA::NO_MEMORY ()); + + instance_ = tmp; } Install_Instance::~Install_Instance (void) @@ -37,7 +43,7 @@ namespace DAnCE DANCE_TRACE ("Install_Instance::invoke_pre_interceptor"); (*i)->instance_pre_install (this->plan_, - this->instanceRef_); + this->instanceRef_); } @@ -50,9 +56,11 @@ namespace DAnCE ACE_TEXT ("Install_Instance::invoke - ") ACE_TEXT ("Invoking install_instance on handler for type <%C>\n"), this->instance_type_.c_str ())); + handler->install_instance (this->plan_, this->instanceRef_, this->instance_.out ()); + DANCE_DEBUG (10, (LM_TRACE, DLINFO ACE_TEXT ("Install_Instance::invoke - ") ACE_TEXT ("install_instance completed\n"))); diff --git a/CIAO/ciao/Deployment/Handlers/Component_Handler.cpp b/CIAO/ciao/Deployment/Handlers/Component_Handler.cpp index cb48a36dd58..c90caa0233c 100644 --- a/CIAO/ciao/Deployment/Handlers/Component_Handler.cpp +++ b/CIAO/ciao/Deployment/Handlers/Component_Handler.cpp @@ -32,6 +32,13 @@ namespace CIAO ::CORBA::ULong instanceRef, ::CORBA::Any_out instance_reference) { + CORBA::Any *retval = 0; + ACE_NEW_THROW_EX (retval, + CORBA::Any (), + CORBA::NO_MEMORY ()); + + instance_reference = retval; + CIAO_TRACE ("Component_Handler_i::install_instance"); const ::Deployment::InstanceDeploymentDescription &idd (plan.instance[instanceRef]); @@ -208,13 +215,7 @@ namespace CIAO cont_id, comp_ref.in ()); - CORBA::Any *retval = 0; - ACE_NEW_THROW_EX (retval, - CORBA::Any (), - CORBA::NO_MEMORY ()); - - (*retval) <<= comp_ref; - instance_reference = retval; + *instance_reference <<= comp_ref;; } void diff --git a/CIAO/ciao/Deployment/Handlers/Container_Handler.cpp b/CIAO/ciao/Deployment/Handlers/Container_Handler.cpp index a054ab2701d..603fe3eb512 100644 --- a/CIAO/ciao/Deployment/Handlers/Container_Handler.cpp +++ b/CIAO/ciao/Deployment/Handlers/Container_Handler.cpp @@ -50,6 +50,13 @@ namespace CIAO ::CORBA::Any_out instance_reference) { CIAO_TRACE ("Container_Handler_i::install_instance"); + + ::CORBA::Any_ptr outref; + ACE_NEW_THROW_EX (outref, + ::CORBA::Any (), + CORBA::NO_MEMORY ()); + + instance_reference = outref; CIAO::Session_Container *cont (0); const char *name (plan.instance[instanceRef].name.in ()); @@ -79,14 +86,9 @@ namespace CIAO DEPLOYMENT_STATE::instance ()->add_container (name, cont); - ::CORBA::Any_ptr outref; - ACE_NEW_THROW_EX (outref, - ::CORBA::Any (), - CORBA::NO_MEMORY ()); - (*outref) <<= container_ref; - instance_reference = outref; + *instance_reference <<= container_ref; } void diff --git a/CIAO/ciao/Deployment/Handlers/Home_Handler.cpp b/CIAO/ciao/Deployment/Handlers/Home_Handler.cpp index d7445a83718..b4f44197373 100644 --- a/CIAO/ciao/Deployment/Handlers/Home_Handler.cpp +++ b/CIAO/ciao/Deployment/Handlers/Home_Handler.cpp @@ -33,6 +33,12 @@ namespace CIAO { CIAO_TRACE ("Home_Handler_i::install_instance"); + ::CORBA::Any *retval_tmp; + ACE_NEW_THROW_EX (retval_tmp, + CORBA::Any (), + CORBA::NO_MEMORY ()); + instance_reference = retval_tmp; + const ::Deployment::InstanceDeploymentDescription &idd (plan.instance[instanceRef]); const ::Deployment::MonolithicDeploymentDescription &mdd (plan.implementation[idd.implementationRef]); @@ -204,13 +210,8 @@ namespace CIAO DEPLOYMENT_STATE::instance ()->add_home (idd.name.in (), cont_id, home_ref.in ()); - CORBA::Any *retval = 0; - ACE_NEW_THROW_EX (retval, - CORBA::Any (), - CORBA::NO_MEMORY ()); - (*retval) <<= home_ref; - instance_reference = retval; + *instance_reference <<=home_ref; } diff --git a/CIAO/ciao/Deployment/Handlers/Homed_Component_Handler.cpp b/CIAO/ciao/Deployment/Handlers/Homed_Component_Handler.cpp index d5b1bae5ffd..ddc255863ca 100644 --- a/CIAO/ciao/Deployment/Handlers/Homed_Component_Handler.cpp +++ b/CIAO/ciao/Deployment/Handlers/Homed_Component_Handler.cpp @@ -34,6 +34,13 @@ namespace CIAO ::CORBA::Any_out instance_reference) { CIAO_TRACE ("Homed_Component_Handler_i::install_instance"); + + CORBA::Any *any = 0; + ACE_NEW_THROW_EX (any, + CORBA::Any (), + CORBA::NO_MEMORY ()); + + instance_reference = any; const ::Deployment::InstanceDeploymentDescription &idd (plan.instance[instanceRef]); const ::Deployment::MonolithicDeploymentDescription &mdd (plan.implementation[idd.implementationRef]); @@ -153,16 +160,8 @@ namespace CIAO DEPLOYMENT_STATE::instance ()->add_component (idd.name.in (), cont_id, - ref.in ()); - - CORBA::Any *any = 0; - ACE_NEW_THROW_EX (any, - CORBA::Any (), - CORBA::NO_MEMORY ()); - - (*any) <<= ref; - - instance_reference = any; + ref.in ()); + (*instance_reference) <<= ref; } void diff --git a/CIAO/ciao/Deployment/Interceptors/Deployment_Interceptors.cpp b/CIAO/ciao/Deployment/Interceptors/Deployment_Interceptors.cpp index 644db408a8e..9597beb7df6 100644 --- a/CIAO/ciao/Deployment/Interceptors/Deployment_Interceptors.cpp +++ b/CIAO/ciao/Deployment/Interceptors/Deployment_Interceptors.cpp @@ -49,7 +49,7 @@ namespace CIAO ACE_TEXT ("Interceptor post install for instance %C\n"), plan.instance[instance_index].name.in ())); - if (&instance_reference == 0) + if (instance_reference.type() == ::CORBA::_tc_null) { DANCE_ERROR (3, (LM_WARNING, DLINFO ACE_TEXT ("CIAO_StoreReferences_i::instance_post_install - ") |