Fix memory leak 85/268885/2
authorChanggyu Choi <changyu.choi@samsung.com>
Tue, 4 Jan 2022 06:40:18 +0000 (15:40 +0900)
committerChanggyu Choi <changyu.choi@samsung.com>
Tue, 4 Jan 2022 09:33:08 +0000 (18:33 +0900)
Change-Id: Ib8a80616bf858128f54b65740149ad4487fbd5c7
Signed-off-by: Changgyu Choi <changyu.choi@samsung.com>
lib/src/shortcut_db.c

index ea1cc3c..5790e54 100644 (file)
@@ -71,17 +71,16 @@ 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 = SHORTCUT_ERROR_NONE;
        int sql_ret;
        char *errmsg = NULL;
+       sqlite3 *db = NULL;
 
        SHORTCUT_INFO("DB is corrupted, start to recover corrupted db");
-       if (db)
-               sqlite3_close(db);
-       unlink(_db_path);
 
+       unlink(_db_path);
        sql_ret = sqlite3_open_v2(_db_path, &db,
                                SQLITE_OPEN_CREATE | SQLITE_OPEN_READWRITE,
                                NULL);
@@ -101,6 +100,8 @@ static int __recover_corrupted_db(sqlite3 *db)
 out:
        if (errmsg)
                sqlite3_free(errmsg);
+       if (db)
+               sqlite3_close_v2(db);
 
        return ret;
 }
@@ -138,12 +139,12 @@ EAPI int shortcut_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)
-               sqlite3_close(db);
+               sqlite3_close_v2(db);
+       if (sql_ret == SQLITE_CORRUPT || sql_ret == SQLITE_NOTADB || is_db_corrupted)
+               ret = __recover_corrupted_db();
 
        return ret;
 }