diff options
author | SukhyungKang <shine.kang@samsung.com> | 2022-01-04 15:09:53 +0900 |
---|---|---|
committer | SukhyungKang <shine.kang@samsung.com> | 2022-01-04 16:28:34 +0900 |
commit | e6d090fc5186c7ba23c4302e8f703e4d0eb0070f (patch) | |
tree | 40db4e2ab84f16789ee5c77f598845242c2a1b7a | |
parent | 445ee14f2748e38c941b8d4ed2ac853fbbdf1de3 (diff) | |
download | widget-service-e6d090fc5186c7ba23c4302e8f703e4d0eb0070f.tar.gz widget-service-e6d090fc5186c7ba23c4302e8f703e4d0eb0070f.tar.bz2 widget-service-e6d090fc5186c7ba23c4302e8f703e4d0eb0070f.zip |
Fix leak and worng calling after release
Change-Id: Iedda3416910a1a9f89b40ecd77ac7069e4aeb70e
Signed-off-by: SukhyungKang <shine.kang@samsung.com>
-rw-r--r-- | parser/widget_plugin_parser_db.c | 25 | ||||
-rw-r--r-- | src/widget_service.c | 49 |
2 files changed, 44 insertions, 30 deletions
diff --git a/parser/widget_plugin_parser_db.c b/parser/widget_plugin_parser_db.c index ecdf5c8..9095720 100644 --- a/parser/widget_plugin_parser_db.c +++ b/parser/widget_plugin_parser_db.c @@ -270,6 +270,7 @@ static int _insert_widget_class(sqlite3 *db, const char *pkgid, GList *wcs) ret = sqlite3_step(stmt); if (ret != SQLITE_DONE) { LOGE("step error: %s", sqlite3_errmsg(db)); + ret = -1; break; } @@ -277,18 +278,28 @@ static int _insert_widget_class(sqlite3 *db, const char *pkgid, GList *wcs) sqlite3_clear_bindings(stmt); if (_insert_support_size(db, pkgid, wc->classid, - wc->support_size)) - return -1; - if (_insert_label(db, wc->classid, wc->label)) - return -1; - if (_insert_icon(db, pkgid, wc->classid, wc->icon)) - return -1; + wc->support_size)) { + LOGE("Failed to insert support size"); + ret = -1; + break; + } + if (_insert_label(db, wc->classid, wc->label)) { + LOGE("Failed to insert label"); + ret = -1; + break; + } + if (_insert_icon(db, pkgid, wc->classid, wc->icon)) { + LOGE("Failed to insert icon"); + ret = -1; + break; + } + ret = 0; } if (stmt) sqlite3_finalize(stmt); - return 0; + return ret; } int widget_parser_db_insert_widget_class(const char *pkgid, GList *widget_list) diff --git a/src/widget_service.c b/src/widget_service.c index d055538..ecd772d 100644 --- a/src/widget_service.c +++ b/src/widget_service.c @@ -1291,8 +1291,6 @@ static char *_get_main_app_id(const char *widget_id, uid_t uid) ret = sqlite3_step(stmt); if (ret != SQLITE_ROW) { - sqlite3_finalize(stmt); - sqlite3_close_v2(db); /* TODO: which error should be set? */ if (ret == SQLITE_DONE) { set_last_result(WIDGET_ERROR_NOT_EXIST); @@ -1300,6 +1298,8 @@ static char *_get_main_app_id(const char *widget_id, uid_t uid) set_last_result(WIDGET_ERROR_FAULT); _E("step error: %s", sqlite3_errmsg(db)); } + sqlite3_finalize(stmt); + sqlite3_close_v2(db); return NULL; } @@ -1436,8 +1436,6 @@ static char *_get_app_id_of_setup_app(const char *widget_id, uid_t uid) ret = sqlite3_step(stmt); if (ret != SQLITE_ROW) { - sqlite3_finalize(stmt); - sqlite3_close_v2(db); /* TODO: which error should be set? */ if (ret == SQLITE_DONE) { set_last_result(WIDGET_ERROR_NOT_EXIST); @@ -1445,6 +1443,8 @@ static char *_get_app_id_of_setup_app(const char *widget_id, uid_t uid) set_last_result(WIDGET_ERROR_FAULT); _E("step error: %s", sqlite3_errmsg(db)); } + sqlite3_finalize(stmt); + sqlite3_close_v2(db); return NULL; } @@ -1520,8 +1520,6 @@ static int _get_nodisplay(const char *widget_id, uid_t uid) ret = sqlite3_step(stmt); if (ret != SQLITE_ROW) { - sqlite3_finalize(stmt); - sqlite3_close_v2(db); /* TODO: which error should be set? */ if (ret == SQLITE_DONE) { set_last_result(WIDGET_ERROR_NOT_EXIST); @@ -1529,6 +1527,8 @@ static int _get_nodisplay(const char *widget_id, uid_t uid) set_last_result(WIDGET_ERROR_FAULT); _E("step error: %s", sqlite3_errmsg(db)); } + sqlite3_finalize(stmt); + sqlite3_close_v2(db); return 0; } @@ -1566,14 +1566,15 @@ static int _get_update_period(const char *widget_id, uid_t uid, double *period) ret = sqlite3_step(stmt); if (ret != SQLITE_ROW) { - sqlite3_finalize(stmt); - sqlite3_close_v2(db); if (ret == SQLITE_DONE) { - return WIDGET_ERROR_NOT_EXIST; + ret = WIDGET_ERROR_NOT_EXIST; } else { _E("step error: %s", sqlite3_errmsg(db)); - return WIDGET_ERROR_FAULT; + ret = WIDGET_ERROR_FAULT; } + sqlite3_finalize(stmt); + sqlite3_close_v2(db); + return ret; } _get_column_double(stmt, 0, period); @@ -1729,8 +1730,6 @@ static char *_get_preview_image_path(const char *widget_id, int width, ret = sqlite3_step(stmt); if (ret != SQLITE_ROW) { - sqlite3_finalize(stmt); - sqlite3_close_v2(db); /* TODO: which error should be set? */ if (ret == SQLITE_DONE) { set_last_result(WIDGET_ERROR_NOT_EXIST); @@ -1738,6 +1737,8 @@ static char *_get_preview_image_path(const char *widget_id, int width, set_last_result(WIDGET_ERROR_FAULT); _E("step error: %s", sqlite3_errmsg(db)); } + sqlite3_finalize(stmt); + sqlite3_close_v2(db); return NULL; } @@ -2402,8 +2403,6 @@ static char *_get_package_id(const char *widget_id, uid_t uid) ret = sqlite3_step(stmt); if (ret != SQLITE_ROW) { - sqlite3_finalize(stmt); - sqlite3_close_v2(db); /* TODO: which error should be set? */ if (ret == SQLITE_DONE) { set_last_result(WIDGET_ERROR_NOT_EXIST); @@ -2411,6 +2410,8 @@ static char *_get_package_id(const char *widget_id, uid_t uid) set_last_result(WIDGET_ERROR_FAULT); _E("step error: %s", sqlite3_errmsg(db)); } + sqlite3_finalize(stmt); + sqlite3_close_v2(db); return NULL; } @@ -2731,14 +2732,15 @@ static int __get_max_instance(const char *widget_id, uid_t uid) ret = sqlite3_step(stmt); if (ret != SQLITE_ROW) { - sqlite3_finalize(stmt); - sqlite3_close_v2(db); if (ret == SQLITE_DONE) { - return WIDGET_ERROR_NOT_EXIST; + ret = WIDGET_ERROR_NOT_EXIST; } else { _E("step error: %s", sqlite3_errmsg(db)); - return WIDGET_ERROR_FAULT; + ret = WIDGET_ERROR_FAULT; } + sqlite3_finalize(stmt); + sqlite3_close_v2(db); + return ret; } _get_column_int(stmt, 0, &max_instance); @@ -2860,15 +2862,16 @@ static int _get_disable(const char *widget_id, bool *is_disabled, uid_t uid) ret = sqlite3_step(stmt); if (ret != SQLITE_ROW) { - sqlite3_free(query); - sqlite3_finalize(stmt); - sqlite3_close_v2(db); if (ret == SQLITE_DONE) { - return WIDGET_ERROR_NOT_EXIST; + ret = WIDGET_ERROR_NOT_EXIST; } else { _E("step error: %s, %d", sqlite3_errmsg(db), ret); - return WIDGET_ERROR_FAULT; + ret = WIDGET_ERROR_FAULT; } + sqlite3_free(query); + sqlite3_finalize(stmt); + sqlite3_close_v2(db); + return ret; } _get_column_int(stmt, 0, &disable); |