Author: shankar
Date: Wed Feb 13 20:20:14 2008
New Revision: 627658

URL: http://svn.apache.org/viewvc?rev=627658&view=rev
Log:
memory leak fix

Modified:
    webservices/rampart/trunk/c/samples/sct_provider/sct_provider_hash_map.c
    webservices/rampart/trunk/c/src/trust/sts_client.c

Modified: 
webservices/rampart/trunk/c/samples/sct_provider/sct_provider_hash_map.c
URL: 
http://svn.apache.org/viewvc/webservices/rampart/trunk/c/samples/sct_provider/sct_provider_hash_map.c?rev=627658&r1=627657&r2=627658&view=diff
==============================================================================
--- webservices/rampart/trunk/c/samples/sct_provider/sct_provider_hash_map.c 
(original)
+++ webservices/rampart/trunk/c/samples/sct_provider/sct_provider_hash_map.c 
Wed Feb 13 20:20:14 2008
@@ -178,6 +178,34 @@
     return status;
 }
 
+static neethi_policy_t *
+clone_policy(neethi_policy_t *policy, const axutil_env_t* env)
+{
+       neethi_policy_t *return_policy = NULL;
+
+       if (policy)
+    {
+               axutil_array_list_t *policy_components = NULL;
+               axis2_char_t *name = NULL;
+               axis2_char_t* id = NULL;
+               
+               return_policy = neethi_policy_create(env);
+               policy_components = neethi_policy_get_policy_components(policy, 
env);
+               neethi_policy_add_policy_components(return_policy, 
policy_components, env);
+
+               name = neethi_policy_get_name(policy, env);
+        if (name)
+        {
+            neethi_policy_set_name(return_policy, env, name);
+        }
+        id = neethi_policy_get_id(policy, env);
+        if (id)
+        {
+            neethi_policy_set_id(return_policy, env, id);
+        }
+    }
+       return return_policy;
+}
 
 static security_context_token_t* 
 sct_provider_obtain_token_from_sts(const axutil_env_t* env, rp_property_t 
*token, axis2_msg_ctx_t* msg_ctx)
@@ -191,7 +219,7 @@
     trust_rstr_t* rstr = NULL;
     security_context_token_t *sct = NULL;
        neethi_policy_t *sts_policy = NULL;
-       neethi_policy_t *normalised_policy = NULL;
+       neethi_policy_t *cloned_policy = NULL;
 
     /*check whether rp_property is valid*/
     rp_sct = (rp_security_context_token_t*)rp_property_get_value(token, env);
@@ -255,10 +283,10 @@
        sts_policy = rp_security_context_token_get_bootstrap_policy(rp_sct, 
env);
        if(sts_policy)
        {
-               normalised_policy = neethi_engine_get_normalize(env, 
AXIS2_FALSE, sts_policy);
+               cloned_policy = clone_policy(sts_policy, env);
        }
                
-    trust_sts_client_request_security_token_using_policy(sts_client, env, 
trust_context, normalised_policy);
+    trust_sts_client_request_security_token_using_policy(sts_client, env, 
trust_context, cloned_policy);
 
     /*obtain the reply from sts*/
     rstr = trust_context_get_rstr(trust_context, env);

Modified: webservices/rampart/trunk/c/src/trust/sts_client.c
URL: 
http://svn.apache.org/viewvc/webservices/rampart/trunk/c/src/trust/sts_client.c?rev=627658&r1=627657&r2=627658&view=diff
==============================================================================
--- webservices/rampart/trunk/c/src/trust/sts_client.c (original)
+++ webservices/rampart/trunk/c/src/trust/sts_client.c Wed Feb 13 20:20:14 2008
@@ -87,17 +87,17 @@
 {
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
 
+    if(sts_client->sec_policy)
+       {
+               rp_secpolicy_free(sts_client->sec_policy, env);
+               sts_client->sec_policy = NULL;
+       }
+
        if(sts_client->svc_client)
        {
                axis2_svc_client_free(sts_client->svc_client, env);
                sts_client->svc_client = NULL;
        }
-
-       /*if(sts_client->sec_policy)
-       {
-               rp_secpolicy_free(sts_client->sec_policy, env->allocator);
-               sts_client->sec_policy = NULL;
-       }*/
 
     if (sts_client)
     {


Reply via email to