Fixed freeing invalid memory issue
authorSansar Choinyambuu <schoinya@hsr.ch>
Wed, 5 Oct 2011 07:01:24 +0000 (09:01 +0200)
committerAndreas Steffen <andreas.steffen@strongswan.org>
Mon, 28 Nov 2011 13:34:21 +0000 (14:34 +0100)
src/libimcv/plugins/imc_attestation/imc_attestation.c
src/libpts/tcg/tcg_pts_attr_simple_comp_evid.c

index 2a3deb9..993ea25 100644 (file)
@@ -599,11 +599,11 @@ TNC_Result TNC_IMC_ReceiveMessage(TNC_IMCID imc_id,
                                                        hasher_t *hasher;
                                                        u_char hash_output[HASH_SIZE_SHA384];
                                                        hash_algorithm_t hash_alg;
-                                                                                                               
+
                                                        /* TODO: Implement BIOS measurement */
                                                        DBG1(DBG_IMC, "Experimental implementation:"
                                                                 " Extend TPM with etc/tnc_config file");
-
+                                                       
                                                        params.flags = PTS_SIMPLE_COMP_EVID_FLAG_PCR | PTS_SIMPLE_COMP_EVID_FLAG_NO_VALID;
                                                        params.depth = 0;
                                                        params.vendor_id = PEN_TCG;
@@ -635,7 +635,8 @@ TNC_Result TNC_IMC_ReceiveMessage(TNC_IMCID imc_id,
                                                        hasher = lib->crypto->create_hasher(lib->crypto, hash_alg);
                                                        if (!hasher)
                                                        {
-                                                               DBG1(DBG_IMC, "  hasher %N not available", hash_algorithm_names, hash_alg);
+                                                               DBG1(DBG_IMC, "  hasher %N not available",
+                                                                        hash_algorithm_names, hash_alg);
                                                                return TNC_RESULT_FATAL;
                                                        }
 
@@ -665,7 +666,6 @@ TNC_Result TNC_IMC_ReceiveMessage(TNC_IMCID imc_id,
                                                                        return TNC_RESULT_FATAL;
                                                                }
                                                                params.measurement_time = chunk_create(utc_time, 20);
-                                                               params.measurement_time = chunk_clone(params.measurement_time);
                                                        }
                                                        
                                                        params.measurement = chunk_create(hash_output, hasher->get_hash_size(hasher));
@@ -687,6 +687,7 @@ TNC_Result TNC_IMC_ReceiveMessage(TNC_IMCID imc_id,
                                                        /* Buffer Simple Component Evidence attribute */
                                                        attr = tcg_pts_attr_simple_comp_evid_create(params);
                                                        evidences->insert_last(evidences, attr);
+                                                       
                                                        break;
                                                }
                                                case PTS_FUNC_COMP_NAME_IGNORE:
@@ -724,7 +725,7 @@ TNC_Result TNC_IMC_ReceiveMessage(TNC_IMCID imc_id,
                                        attr_list->insert_last(attr_list, attr);
                                        
                                        e->destroy(e);
-                                       evidences->destroy(evidences);
+                                       DESTROY_IF(evidences);
                                        
                                        break;
                                }
index 69ff00d..493a227 100644 (file)
@@ -564,11 +564,11 @@ pa_tnc_attr_t *tcg_pts_attr_simple_comp_evid_create(
                .extended_pcr = params.extended_pcr,
                .hash_algorithm = params.hash_algorithm,
                .transformation = params.transformation,
-               .measurement_time = params.measurement_time,
-               .policy_uri = params.policy_uri,
-               .pcr_before = params.pcr_before,
-               .pcr_after = params.pcr_after,
-               .measurement = params.measurement,
+               .measurement_time = chunk_clone(params.measurement_time),
+               .policy_uri = chunk_clone(params.policy_uri),
+               .pcr_before = chunk_clone(params.pcr_before),
+               .pcr_after = chunk_clone(params.pcr_after),
+               .measurement = chunk_clone(params.measurement),
        );
 
        return &this->public.pa_tnc_attribute;