You are viewing a plain text version of this content. The canonical link for it is here.
Posted to rampart-dev@ws.apache.org by sh...@apache.org on 2008/02/15 03:54:17 UTC
svn commit: r627934 - in /webservices/rampart/trunk/c:
samples/sct_provider/sct_provider_stored_key.c src/omxmlsec/derivation.c
src/util/rampart_sec_header_builder.c src/util/rampart_signature.c
Author: shankar
Date: Thu Feb 14 18:54:16 2008
New Revision: 627934
URL: http://svn.apache.org/viewvc?rev=627934&view=rev
Log:
memory leak fix
Modified:
webservices/rampart/trunk/c/samples/sct_provider/sct_provider_stored_key.c
webservices/rampart/trunk/c/src/omxmlsec/derivation.c
webservices/rampart/trunk/c/src/util/rampart_sec_header_builder.c
webservices/rampart/trunk/c/src/util/rampart_signature.c
Modified: webservices/rampart/trunk/c/samples/sct_provider/sct_provider_stored_key.c
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/c/samples/sct_provider/sct_provider_stored_key.c?rev=627934&r1=627933&r2=627934&view=diff
==============================================================================
--- webservices/rampart/trunk/c/samples/sct_provider/sct_provider_stored_key.c (original)
+++ webservices/rampart/trunk/c/samples/sct_provider/sct_provider_stored_key.c Thu Feb 14 18:54:16 2008
@@ -146,6 +146,7 @@
{
security_context_token_t* sct = NULL;
oxs_buffer_t* key_buffer = NULL;
+ axis2_bool_t *free_sctid = AXIS2_FALSE;
sct = security_context_token_create(env);
if(!sct)
@@ -159,9 +160,15 @@
security_context_token_set_secret(sct, env, key_buffer);
if(!sct_id)
+ {
sct_id = oxs_util_generate_id(env,"urn:uuid:");
+ free_sctid = AXIS2_TRUE;
+ }
security_context_token_set_global_identifier(sct, env, axutil_strdup(env, sct_id));
security_context_token_set_local_identifier(sct, env, axutil_strdup(env, "#sctId-29530019"));
+
+ if(free_sctid)
+ AXIS2_FREE(env->allocator, sct_id);
return sct;
}
Modified: webservices/rampart/trunk/c/src/omxmlsec/derivation.c
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/c/src/omxmlsec/derivation.c?rev=627934&r1=627933&r2=627934&view=diff
==============================================================================
--- webservices/rampart/trunk/c/src/omxmlsec/derivation.c (original)
+++ webservices/rampart/trunk/c/src/omxmlsec/derivation.c Thu Feb 14 18:54:16 2008
@@ -136,7 +136,8 @@
uri = axutil_stracat(env, "#", stref_uri);
str_token = oxs_token_build_security_token_reference_element(env, NULL);
- ref_token = oxs_token_build_reference_element(env, str_token, uri, stref_val_type);
+ ref_token = oxs_token_build_reference_element(env, str_token, uri, stref_val_type);
+ AXIS2_FREE(env->allocator, uri);
return oxs_derivation_build_derived_key_token_with_stre(env, derived_key, parent, str_token);
}
Modified: webservices/rampart/trunk/c/src/util/rampart_sec_header_builder.c
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/c/src/util/rampart_sec_header_builder.c?rev=627934&r1=627933&r2=627934&view=diff
==============================================================================
--- webservices/rampart/trunk/c/src/util/rampart_sec_header_builder.c (original)
+++ webservices/rampart/trunk/c/src/util/rampart_sec_header_builder.c Thu Feb 14 18:54:16 2008
@@ -497,6 +497,7 @@
{
AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI,
"[rampart][shb] SAML Supporting token build failed. ERROR");
+ axutil_array_list_free(sign_parts_list, env);
axiom_namespace_free(sec_ns_obj, env);
return AXIS2_FAILURE;
}
@@ -509,6 +510,7 @@
{
AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI,
"[rampart][shb] Issued supporting token build failed. ERROR");
+ axutil_array_list_free(sign_parts_list, env);
axiom_namespace_free(sec_ns_obj, env);
return AXIS2_FAILURE;
}
@@ -541,8 +543,10 @@
rampart_create_fault_envelope(env, RAMPART_FAULT_INVALID_SECURITY,
" Asymmetric Binding failed. Check configurations ", RAMPART_FAULT_IN_POLICY, msg_ctx);
}
+ axutil_array_list_free(sign_parts_list, env);
return AXIS2_FAILURE;
}else{
+ axutil_array_list_free(sign_parts_list, env);
return AXIS2_SUCCESS;
}
@@ -562,8 +566,10 @@
rampart_create_fault_envelope(env, RAMPART_FAULT_INVALID_SECURITY,
" Symmetric Binding failed. Check configurations ", RAMPART_FAULT_IN_POLICY, msg_ctx);
}
+ axutil_array_list_free(sign_parts_list, env);
return AXIS2_FAILURE;
}else{
+ axutil_array_list_free(sign_parts_list, env);
return AXIS2_SUCCESS;
}
}
@@ -571,8 +577,10 @@
{
AXIS2_LOG_INFO(env->log, "[rampart][shb] Using transport binding");
axiom_namespace_free(sec_ns_obj, env);
+ axutil_array_list_free(sign_parts_list, env);
return AXIS2_SUCCESS;
}else{
+ axutil_array_list_free(sign_parts_list, env);
axiom_namespace_free(sec_ns_obj, env);
return AXIS2_FAILURE;
}
Modified: webservices/rampart/trunk/c/src/util/rampart_signature.c
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/c/src/util/rampart_signature.c?rev=627934&r1=627933&r2=627934&view=diff
==============================================================================
--- webservices/rampart/trunk/c/src/util/rampart_signature.c (original)
+++ webservices/rampart/trunk/c/src/util/rampart_signature.c Thu Feb 14 18:54:16 2008
@@ -641,10 +641,10 @@
}
sign_ctx = oxs_sign_ctx_create(env);
- /* Create the sign parts */
- rampart_sig_create_sign_parts(env, rampart_context, nodes_to_sign, server_side, sign_parts_list);
+
/* Set which parts to be signed*/
- oxs_sign_ctx_set_sign_parts(sign_ctx, env, sign_parts_list);
+ oxs_sign_ctx_set_sign_parts(sign_ctx, env,
+ rampart_sig_create_sign_parts(env, rampart_context, nodes_to_sign, server_side, sign_parts_list));
/*Get the binding type. Either symmetric or asymmetric for signature*/
binding_type = rampart_context_get_binding_type(rampart_context,env);
@@ -876,7 +876,24 @@
oxs_transform_t *tr = NULL;
axutil_array_list_t *tr_list = NULL;
- digest_method = rampart_context_get_digest_mtd(rampart_context, env);
+ /*content of sign_parts + sign parts created from nodes_to_sign will be copied to
+ this list. We can put everything to sign_parts, but hard to keep track of who has to delete
+ sign_parts in case if there is an error. Since it is copied, sign_parts can be deleted in
+ rampart_shb_build_message retardless of return status. Modified due to SAML modifications*/
+ axutil_array_list_t *new_sign_parts = NULL;
+ new_sign_parts = axutil_array_list_create(env, 0);
+
+ digest_method = rampart_context_get_digest_mtd(rampart_context, env);
+
+ /*copy the content of sign_parts to new_sign_parts*/
+ for(i = 0; i < axutil_array_list_size(sign_parts, env); i++)
+ {
+ sign_part = (oxs_sign_part_t*)axutil_array_list_get(sign_parts, env, i);
+ if(sign_part)
+ {
+ axutil_array_list_add(new_sign_parts, env, sign_part);
+ }
+ }
/*Now we should create sign part for each node in the arraylist.*/
for (i=0 ; i < axutil_array_list_size(nodes_to_sign, env); i++)
@@ -896,7 +913,7 @@
RAMPART_WSU, RAMPART_WSU_XMLNS,OXS_ATTR_ID, id);
oxs_sign_part_set_node(sign_part, env, node_to_sign);
oxs_sign_part_set_digest_mtd(sign_part, env, digest_method);
- axutil_array_list_add(sign_parts, env, sign_part);
+ axutil_array_list_add(new_sign_parts, env, sign_part);
AXIS2_FREE(env->allocator, id);
id = NULL;
}
@@ -940,6 +957,6 @@
/*Free array list*/
axutil_array_list_free(nodes_to_sign, env);
nodes_to_sign = NULL;
- return sign_parts;
+ return new_sign_parts;
}