summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSukhyungKang <shine.kang@samsung.com>2022-01-04 15:09:53 +0900
committerSukhyungKang <shine.kang@samsung.com>2022-01-04 16:28:34 +0900
commite6d090fc5186c7ba23c4302e8f703e4d0eb0070f (patch)
tree40db4e2ab84f16789ee5c77f598845242c2a1b7a
parent445ee14f2748e38c941b8d4ed2ac853fbbdf1de3 (diff)
downloadwidget-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.c25
-rw-r--r--src/widget_service.c49
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);