wso2-wsf-cpp/prevent_free_of_static_chars.patch
2011-10-03 13:21:45 -05:00

46 lines
1.6 KiB
Diff

From 35055f4b07f06621f43a704285cb90b5d80dff9f Mon Sep 17 00:00:00 2001
From: Peter MacKinnon <pmackinn@redhat.com>
Date: Fri, 16 Sep 2011 11:12:38 -0400
Subject: [PATCH] Fix to prevent free of static chars in fault_value_str
---
src/msg_recv/wsf_cpp_msg_recv.cpp | 9 +++++++--
1 files changed, 7 insertions(+), 2 deletions(-)
diff --git a/src/msg_recv/wsf_cpp_msg_recv.cpp b/src/msg_recv/wsf_cpp_msg_recv.cpp
index bd0575b..abfcd60 100644
--- a/src/msg_recv/wsf_cpp_msg_recv.cpp
+++ b/src/msg_recv/wsf_cpp_msg_recv.cpp
@@ -417,7 +417,7 @@ wsf_cpp_msg_recv_invoke_business_logic_sync(
if (status != AXIS2_SUCCESS || is_fault)
{
- const axis2_char_t *fault_value_str = axutil_stracat(Environment::getEnv(),soapEnvelopePrefix, ":Sender");
+ const axis2_char_t *fault_value_str = NULL;
const axis2_char_t *fault_reason_str = NULL;
const axis2_char_t *err_msg = NULL;
@@ -436,6 +436,9 @@ wsf_cpp_msg_recv_invoke_business_logic_sync(
AXIOM_SOAP12_SOAP_FAULT_VALUE_RECEIVER;
}
}
+ else {
+ fault_value_str = axutil_stracat(Environment::getEnv(),soapEnvelopePrefix, ":Sender");
+ }
err_msg = AXIS2_ERROR_GET_MESSAGE(env->error);
if (err_msg)
@@ -450,7 +453,9 @@ wsf_cpp_msg_recv_invoke_business_logic_sync(
soap_fault = axiom_soap_fault_create_default_fault(env, out_body, fault_value_str,
fault_reason_str, soap_version);
- AXIS2_FREE((Environment::getEnv()->allocator), (void*)fault_value_str);
+ if (skel_invoked) {
+ AXIS2_FREE((Environment::getEnv()->allocator), (void*)fault_value_str);
+ }
if (fault_node)
{
--
1.7.4.4