bug fix for memory leak in CAPI 48/77748/1 accepted/tizen/common/20160701.193002 accepted/tizen/ivi/20160701.043934 accepted/tizen/mobile/20160701.043932 accepted/tizen/tv/20160701.043927 accepted/tizen/wearable/20160701.043940 submit/tizen/20160701.024415 submit/tizen_common/20160701.180000
authorDongsun Lee <ds73.lee@samsung.com>
Fri, 1 Jul 2016 02:35:32 +0000 (11:35 +0900)
committerDongsun Lee <ds73.lee@samsung.com>
Fri, 1 Jul 2016 02:35:32 +0000 (11:35 +0900)
Change-Id: I9dcce77ae4a8593a65f5dfc052a2ddb654322da2
Signed-off-by: Dongsun Lee <ds73.lee@samsung.com>
src/manager/client-capi/ckmc-manager.cpp
src/manager/client-capi/ckmc-type.cpp

index 7f337a1..1cc412b 100644 (file)
@@ -445,7 +445,7 @@ int ckmc_get_pkcs12(const char *alias, const char *key_password,
        if (ret != CKMC_ERROR_NONE) {
                ckmc_key_free(private_key);
                ckmc_cert_free(cert);
-               ckmc_cert_list_free(ca_cert_list);
+               ckmc_cert_list_all_free(ca_cert_list);
        }
 
        return ret;
index 75fde1c..cadc56d 100644 (file)
@@ -230,8 +230,7 @@ int ckmc_load_cert_from_file(const char *file_path, ckmc_cert_s **cert)
 
        int ret = _ckmc_load_cert_from_x509(pcert, cert);
 
-       if (ret != CKMC_ERROR_NONE)
-               X509_free(pcert);
+       X509_free(pcert);
 
        return ret;
 }
@@ -417,8 +416,9 @@ int ckmc_load_from_pkcs12_file(const char *file_path, const char *passphrase,
                        ckmc_cert_list_s *tmpCertList = NULL;
 
                        while ((popedCert = sk_X509_pop(ca)) != NULL) {
-                               if ((tmpRet = _ckmc_load_cert_from_x509(popedCert,
-                                                                                                               &popedCkmCert)) != CKMC_ERROR_NONE)
+                               tmpRet = _ckmc_load_cert_from_x509(popedCert, &popedCkmCert);
+                               X509_free(popedCert);
+                               if (tmpRet != CKMC_ERROR_NONE)
                                        return CKMC_ERROR_OUT_OF_MEMORY;
 
                                if (tmpCertList == NULL) { // first
@@ -502,7 +502,7 @@ void ckmc_pkcs12_free(ckmc_pkcs12_s *pkcs12)
 
        ckmc_key_free(pkcs12->priv_key);
        ckmc_cert_free(pkcs12->cert);
-       ckmc_cert_list_free(pkcs12->ca_chain);
+       ckmc_cert_list_all_free(pkcs12->ca_chain);
        free(pkcs12);
 }