summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsangwan.kwon <sangwan.kwon@samsung.com>2016-12-26 17:30:13 +0900
committersangwan.kwon <sangwan.kwon@samsung.com>2016-12-26 17:35:57 +0900
commit2c45e4cf1d2fb697a39b01d1998a5100663930c9 (patch)
tree1cb3c755ed8bef8df65979158454a7cf0d5e9028
parent1f82da6245aad8026135b28e0ee24ac88b48b108 (diff)
downloadcert-svc-2c45e4cf1d2fb697a39b01d1998a5100663930c9.tar.gz
cert-svc-2c45e4cf1d2fb697a39b01d1998a5100663930c9.tar.bz2
cert-svc-2c45e4cf1d2fb697a39b01d1998a5100663930c9.zip
Fix misuse of sqlite3 statement
* Query and Statement should be free after use. * Freed statement's column shouldn't be used. Change-Id: Ia372ff00ea28c324c8719c01c3634d20570f6169 Signed-off-by: sangwan.kwon <sangwan.kwon@samsung.com>
-rw-r--r--src/server/src/cert-server-logic.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/src/server/src/cert-server-logic.c b/src/server/src/cert-server-logic.c
index 970239b..bbd0c03 100644
--- a/src/server/src/cert-server-logic.c
+++ b/src/server/src/cert-server-logic.c
@@ -939,12 +939,12 @@ int getCertificateDetailFromStore(
char *ckm_alias = add_shared_owner_prefix(gname);
if (!ckm_alias) {
SLOGE("Failed to make alias. memory allocation error.");
+ sqlite3_finalize(stmt);
return CERTSVC_BAD_ALLOC;
}
result = ckmc_get_data(ckm_alias, NULL, &cert_data);
free(ckm_alias);
-
sqlite3_finalize(stmt);
if (result != CKMC_ERROR_NONE) {
@@ -996,7 +996,6 @@ int getCertificateDetailFromSystemStore(const char *gname, char *pOutData)
}
text = (const char *)sqlite3_column_text(stmt, 0);
-
if (!text) {
SLOGE("Fail to sqlite3_column_text");
sqlite3_finalize(stmt);
@@ -1452,6 +1451,7 @@ int loadCertificatesFromStore(
sqlite3_stmt *stmt = NULL;
char **certs = NULL;
size_t gnameSize = 0;
+ char *columnText = NULL;
/* Get associated_gname from store */
char *query = sqlite3_mprintf("select associated_gname from %Q "
@@ -1471,9 +1471,9 @@ int loadCertificatesFromStore(
goto error;
}
- const char *columnText = (const char *)sqlite3_column_text(stmt, 0);
+ columnText = strdup((const char *)sqlite3_column_text(stmt, 0));
if (!columnText) {
- SLOGE("Failed to sqlite3_column_text");
+ SLOGE("Failed to get associated_gname.");
result = CERTSVC_FAIL;
goto error;
}
@@ -1572,6 +1572,9 @@ error:
if (stmt)
sqlite3_finalize(stmt);
+ if (columnText)
+ free(columnText);
+
if (certs) {
for(i = 0; i < gnameSize; i++)
free(certs[i]);