fix wrong memory release 45/178845/1 accepted/tizen/unified/20180514.144934 submit/tizen/20180514.084252
authorYoungjae Shin <yj99.shin@samsung.com>
Mon, 14 May 2018 08:18:08 +0000 (17:18 +0900)
committerYoungjae Shin <yj99.shin@samsung.com>
Mon, 14 May 2018 08:18:08 +0000 (17:18 +0900)
Change-Id: I3d3bfc079dc3da89993bf543012d7599c8c6fbcb

email-common-use/include/email-debug-log.h
email-core/email-core-key-manager.c

index 27670f4..6abb5e0 100644 (file)
@@ -222,14 +222,11 @@ extern "C"
                return;\
        }
 
-
 #define EM_SAFE_FREE(expr)      \
-       ({\
-               if (expr) {\
-                       free (expr);\
-                       expr = NULL;\
-               }\
-       })
+       do { \
+               free (expr);\
+               expr = NULL;\
+       } while (0)
 
 #define EM_SAFE_CLOSE(fd)       \
        ({\
index faba880..17fcb21 100755 (executable)
@@ -238,9 +238,8 @@ FINISH_OFF:
        if (output_cert)
                ckmc_cert_free(output_cert);
 
-       if (err != EMAIL_ERROR_NONE) {
+       if (err != EMAIL_ERROR_NONE)
                EM_SAFE_FREE(p_cert_data);
-       }
 
        EM_DEBUG_FUNC_END();
        return err;
@@ -279,10 +278,8 @@ INTERNAL_FUNC int emcore_check_key_in_key_manager(const char *data_name)
 
 
 FINISH_OFF:
-       if (email_key != NULL) {
+       if (email_key != NULL)
                ckmc_key_free(email_key);
-       }
-
 
        EM_SAFE_FREE(alias);
 
@@ -353,6 +350,7 @@ FINISH_OFF:
 INTERNAL_FUNC int emcore_encryption_data_in_key_manager(const char *data_name, char *input_data, int input_length, unsigned char **output_data, int *output_length)
 {
        EM_DEBUG_FUNC_BEGIN();
+       char *alias = NULL;
        int err = EMAIL_ERROR_NONE;
        int ckmc_ret = CKMC_ERROR_NONE;
 
@@ -378,33 +376,26 @@ INTERNAL_FUNC int emcore_encryption_data_in_key_manager(const char *data_name, c
 
        ckmc_ret = ckmc_generate_new_params(CKMC_ALGO_AES_CBC, &params);
        if (ckmc_ret != CKMC_ERROR_NONE) {
-
                EM_DEBUG_LOG("ckmc_generate_new_params failed");
                err = EMAIL_ERROR_KEY_MANAGER_FAILURE;
                return err;
-
        }
 
 
        ckmc_ret = ckmc_param_list_set_buffer(params, CKMC_PARAM_ED_IV, &iv_buffer);
        if (ckmc_ret != CKMC_ERROR_NONE) {
-
                EM_DEBUG_LOG("ckmc_param_list_set_buffer failed");
                err = EMAIL_ERROR_KEY_MANAGER_FAILURE;
-               EM_SAFE_FREE(params);
-               return err;
-
+               goto FINISH_OFF;
        }
 
 
-       char *alias = __get_key_manager_alias(data_name);
+       alias = __get_key_manager_alias(data_name);
        ckmc_ret = ckmc_encrypt_data(params, alias, NULL, plaintext, &encrypted);
        if (ckmc_ret != CKMC_ERROR_NONE) {
-
                EM_DEBUG_LOG("ckmc_encrypt_data failed");
                err = EMAIL_ERROR_KEY_MANAGER_FAILURE;
                goto FINISH_OFF;
-
        }
 
        *output_data = encrypted->data;
@@ -413,10 +404,6 @@ INTERNAL_FUNC int emcore_encryption_data_in_key_manager(const char *data_name, c
        if (encrypted->data != NULL)
                encrypted->data = NULL;
 
-
-
-
-
 FINISH_OFF:
 
        if (encrypted != NULL)
@@ -425,8 +412,6 @@ FINISH_OFF:
        if (params != NULL)
                ckmc_param_list_free(params);
 
-
-
        EM_SAFE_FREE(alias);
        EM_DEBUG_FUNC_END();
        return err;