summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWilliam R. Otte <wotte@dre.vanderbilt.edu>2010-06-30 21:42:17 +0000
committerWilliam R. Otte <wotte@dre.vanderbilt.edu>2010-06-30 21:42:17 +0000
commitc7bf39aebdc22a3a7a389dbc5ce429b2259347c2 (patch)
treec9140e2473fed5087b5ff56195ec8ca4bc9491e0
parentb8d6c4801b02af8323e7e3f83edab97174af659d (diff)
downloadATCD-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.
-rw-r--r--CIAO/ChangeLog22
-rw-r--r--CIAO/DAnCE/LocalityManager/Handler/Locality_Manager_Handler_Impl.cpp14
-rw-r--r--CIAO/DAnCE/LocalityManager/Interceptors/Best_Effort.cpp12
-rw-r--r--CIAO/DAnCE/LocalityManager/Interceptors/Standard_Error.cpp12
-rw-r--r--CIAO/DAnCE/LocalityManager/Scheduler/Events/Action_Base.cpp5
-rw-r--r--CIAO/DAnCE/LocalityManager/Scheduler/Events/Endpoint.cpp5
-rw-r--r--CIAO/DAnCE/LocalityManager/Scheduler/Events/Install.cpp10
-rw-r--r--CIAO/ciao/Deployment/Handlers/Component_Handler.cpp15
-rw-r--r--CIAO/ciao/Deployment/Handlers/Container_Handler.cpp14
-rw-r--r--CIAO/ciao/Deployment/Handlers/Home_Handler.cpp13
-rw-r--r--CIAO/ciao/Deployment/Handlers/Homed_Component_Handler.cpp19
-rw-r--r--CIAO/ciao/Deployment/Interceptors/Deployment_Interceptors.cpp2
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 - ")