Fix memory leak 84/268884/2
authorChanggyu Choi <changyu.choi@samsung.com>
Tue, 4 Jan 2022 06:34:19 +0000 (15:34 +0900)
committerChanggyu Choi <changyu.choi@samsung.com>
Tue, 4 Jan 2022 07:54:01 +0000 (16:54 +0900)
Change-Id: Id56f1b7c0fc6c78fe1ce83dca908f90d14571e51
Signed-off-by: Changgyu Choi <changyu.choi@samsung.com>
src/badge_db.c

index 0bbc57a..e143ae9 100644 (file)
@@ -69,15 +69,14 @@ static int __check_integrity_cb(void *pid, int argc, char **argv, char **notUsed
 /* LCOV_EXCL_STOP */
 
 /* LCOV_EXCL_START */
-static int __recover_corrupted_db(sqlite3 *db)
+static int __recover_corrupted_db()
 {
        int ret = BADGE_ERROR_NONE;
        int sql_ret;
        char *errmsg = NULL;
+       sqlite3 *db = NULL;
 
        INFO("DB is corrupted, start to recover corrupted db");
-       if (db)
-               sqlite3_close(db);
        unlink(BADGE_DB_PATH);
 
        sql_ret = sqlite3_open_v2(BADGE_DB_PATH, &db,
@@ -100,6 +99,9 @@ out:
        if (errmsg)
                sqlite3_free(errmsg);
 
+       if (db)
+               sqlite3_close_v2(db);
+
        return ret;
 }
 /* LCOV_EXCL_STOP */
@@ -135,12 +137,14 @@ EXPORT_API int badge_db_init(void)
        }
 
 out:
-       if (sql_ret == SQLITE_CORRUPT || sql_ret == SQLITE_NOTADB || is_db_corrupted)
-               ret = __recover_corrupted_db(db);
        if (errmsg)
                sqlite3_free(errmsg);
        if (db)
-               db_util_close(db);
+               sqlite3_close_v2(db);
+
+       if (sql_ret == SQLITE_CORRUPT || sql_ret == SQLITE_NOTADB
+                       || is_db_corrupted)
+               ret = __recover_corrupted_db();
 
        return ret;
 }