From 6f3529c55280700c8b733cfc7cf8f903f52fa14a Mon Sep 17 00:00:00 2001 From: Krzysztof Jackiewicz Date: Tue, 22 Jan 2019 14:35:20 +0100 Subject: [PATCH] Fix SVACE - WGID=371502:MEMORY_LEAK.EX - WGID=371643:MEMORY_LEAK.EX - WGID=371913:NULL_AFTER_DEREF - WGID=371914:NULL_AFTER_DEREF Change-Id: I8515247cb2267c20cc012644ca29a68ed0087a4f --- src/server/src/cert-server-db.c | 12 ++---- src/server/src/cert-server-logic.c | 82 +++++++++++++------------------------- src/vcore/Client.cpp | 6 +-- 3 files changed, 34 insertions(+), 66 deletions(-) diff --git a/src/server/src/cert-server-db.c b/src/server/src/cert-server-db.c index 4943c24..2064d6d 100644 --- a/src/server/src/cert-server-db.c +++ b/src/server/src/cert-server-db.c @@ -1,5 +1,5 @@ /** - * Copyright (c) 2016 - 2018 Samsung Electronics Co., Ltd All Rights Reserved + * Copyright (c) 2016 - 2019 Samsung Electronics Co., Ltd All Rights Reserved * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -141,11 +141,8 @@ int get_schema_version(schema_version *version) exit: - if (query) - sqlite3_free(query); - - if (stmt) - sqlite3_finalize(stmt); + sqlite3_free(query); + sqlite3_finalize(stmt); return result; } @@ -170,8 +167,7 @@ int set_schema_version(schema_version version) if (result != CERTSVC_SUCCESS) SLOGE("Insert schema version to database failed."); - if (query) - sqlite3_free(query); + sqlite3_free(query); return result; } diff --git a/src/server/src/cert-server-logic.c b/src/server/src/cert-server-logic.c index 232eb4d..cdbbb73 100644 --- a/src/server/src/cert-server-logic.c +++ b/src/server/src/cert-server-logic.c @@ -1,5 +1,5 @@ /** - * Copyright (c) 2016 - 2017 Samsung Electronics Co., Ltd All Rights Reserved + * Copyright (c) 2016 - 2019 Samsung Electronics Co., Ltd All Rights Reserved * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -368,11 +368,8 @@ error: if (result != CERTSVC_SUCCESS) free(tempBuffer); - if (query) - sqlite3_free(query); - - if (stmt) - sqlite3_finalize(stmt); + sqlite3_free(query); + sqlite3_finalize(stmt); return result; } @@ -415,10 +412,8 @@ int update_ca_certificate_file(char *cert) result = execute_select_query(query, &stmt); - if (query) { - sqlite3_free(query); - query = NULL; - } + sqlite3_free(query); + query = NULL; if (result != CERTSVC_SUCCESS) { SLOGE("Querying database failed."); @@ -486,8 +481,7 @@ int update_ca_certificate_file(char *cert) counter); error_and_exit: - if (stmt) - sqlite3_finalize(stmt); + sqlite3_finalize(stmt); return result; } @@ -1129,15 +1123,11 @@ int deleteCertificateFromStore(CertStoreType storeType, const char *gname) goto error; } - if (query) { - sqlite3_free(query); - query = NULL; - } + sqlite3_free(query); + query = NULL; - if (stmt) { - sqlite3_finalize(stmt); - stmt = NULL; - } + sqlite3_finalize(stmt); + stmt = NULL; query = sqlite3_mprintf("delete from %Q where gname=%Q", storetype_to_string(storeType), gname); @@ -1148,10 +1138,8 @@ int deleteCertificateFromStore(CertStoreType storeType, const char *gname) goto error; } - if (query) { - sqlite3_free(query); - query = NULL; - } + sqlite3_free(query); + query = NULL; CertStoreType other = ALL_STORE & ~SYSTEM_STORE & ~storeType; CertStoreType current; @@ -1215,11 +1203,9 @@ int deleteCertificateFromStore(CertStoreType storeType, const char *gname) result = CERTSVC_SUCCESS; error: - if (query) - sqlite3_free(query); - if (stmt) - sqlite3_finalize(stmt); + sqlite3_free(query); + sqlite3_finalize(stmt); free(private_key_name); return result; @@ -1319,7 +1305,8 @@ int getCertificateListFromStore( } else if (reqType == CERTSVC_GET_USER_CERTIFICATE_LIST) { if (storeType == SYSTEM_STORE) { SLOGE("Invalid store type passed."); - return CERTSVC_WRONG_ARGUMENT; + result = CERTSVC_WRONG_ARGUMENT; + goto error; } else { query = sqlite3_mprintf("select gname, common_name, enabled from %Q where "\ "private_key_gname IS NOT NULL and is_root_app_enabled=%d and enabled=%d", @@ -1385,15 +1372,11 @@ int getCertificateListFromStore( goto error; } - if (query) { - sqlite3_free(query); - query = NULL; - } + sqlite3_free(query); + query = NULL; - if (stmt) { - sqlite3_finalize(stmt); - stmt = NULL; - } + sqlite3_finalize(stmt); + stmt = NULL; } *certCount = count; @@ -1440,11 +1423,8 @@ int getCertificateListFromStore( result = CERTSVC_SUCCESS; error: - if (query) - sqlite3_free(query); - - if (stmt) - sqlite3_finalize(stmt); + sqlite3_free(query); + sqlite3_finalize(stmt); if (rootCertHead) { currentNode = rootCertHead; @@ -1511,11 +1491,8 @@ int getCertificateAliasFromStore(CertStoreType storeType, const char *gname, SLOGD("success : getCertificateAliasFromStore"); error: - if (query) - sqlite3_free(query); - - if (stmt) - sqlite3_finalize(stmt); + sqlite3_free(query); + sqlite3_finalize(stmt); return result; } @@ -1654,14 +1631,9 @@ int loadCertificatesFromStore( SLOGD("success: loadCertificatesFromStore. CERT_COUNT=%d", gnameSize); error: - if (query) - sqlite3_free(query); - - if (stmt) - sqlite3_finalize(stmt); - - if (columnText) - free(columnText); + sqlite3_free(query); + sqlite3_finalize(stmt); + free(columnText); if (certs) { for (i = 0; i < gnameSize; i++) diff --git a/src/vcore/Client.cpp b/src/vcore/Client.cpp index b271907..f04e37c 100644 --- a/src/vcore/Client.cpp +++ b/src/vcore/Client.cpp @@ -1,5 +1,5 @@ /** - * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved + * Copyright (c) 2016 - 2019 Samsung Electronics Co., Ltd All Rights Reserved * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -481,7 +481,7 @@ int vcore_client_get_certificate_from_store(CertStoreType storeType, const char recvData = cert_svc_client_comm(pSendData); - if (recvData.result < 0) { + if (recvData.result != CERTSVC_SUCCESS) { LogError("An error occurred from server side err : " << recvData.result); free(pSendData); return recvData.result; @@ -499,7 +499,7 @@ int vcore_client_get_certificate_from_store(CertStoreType storeType, const char *certData = outData; *certSize = recvData.dataBlockLen; - return recvData.result; + return CERTSVC_SUCCESS; } else { LogError("revcData length is wrong : " << recvData.dataBlockLen); return CERTSVC_WRONG_ARGUMENT; -- 2.7.4