From b3314aa160c433ec64c3f15dfb3b515f4f72e2d2 Mon Sep 17 00:00:00 2001 From: Sangyoon Jang Date: Wed, 12 Oct 2016 15:22:55 +0900 Subject: [PATCH] Fix returning error to client Return ENOMEM when memory allocation failed. Change-Id: I4b4c0b8777c9f8a18fc1c1955e923d7ee3f290c1 Signed-off-by: Sangyoon Jang --- src/request.c | 57 ++++++++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 48 insertions(+), 9 deletions(-) diff --git a/src/request.c b/src/request.c index 8f5e3f1..d4d049f 100644 --- a/src/request.c +++ b/src/request.c @@ -283,7 +283,9 @@ static int __handle_request_install(uid_t uid, args = (char *)calloc(len, sizeof(char)); if (args == NULL) { ERR("calloc failed"); - ret = -1; + g_dbus_method_invocation_return_value(invocation, + g_variant_new("(is)", PKGMGR_R_ENOMEM, "")); + ret = -1; goto catch; } @@ -309,6 +311,8 @@ static int __handle_request_install(uid_t uid, reqkey = __generate_reqkey(pkgpath); if (reqkey == NULL) { + g_dbus_method_invocation_return_value(invocation, + g_variant_new("(is)", PKGMGR_R_ENOMEM, "")); ret = -1; goto catch; } @@ -360,7 +364,9 @@ static int __handle_request_mount_install(uid_t uid, args = (char *)calloc(len, sizeof(char)); if (args == NULL) { ERR("calloc failed"); - ret = -1; + g_dbus_method_invocation_return_value(invocation, + g_variant_new("(is)", PKGMGR_R_ENOMEM, "")); + ret = -1; goto catch; } @@ -386,6 +392,8 @@ static int __handle_request_mount_install(uid_t uid, reqkey = __generate_reqkey(pkgpath); if (reqkey == NULL) { + g_dbus_method_invocation_return_value(invocation, + g_variant_new("(is)", PKGMGR_R_ENOMEM, "")); ret = -1; goto catch; } @@ -428,8 +436,11 @@ static int __handle_request_reinstall(uid_t uid, } reqkey = __generate_reqkey(pkgid); - if (reqkey == NULL) + if (reqkey == NULL) { + g_dbus_method_invocation_return_value(invocation, + g_variant_new("(is)", PKGMGR_R_ENOMEM, "")); return -1; + } if (_pm_queue_push(target_uid, reqkey, PKGMGR_REQUEST_TYPE_REINSTALL, pkgtype, pkgid, "")) { g_dbus_method_invocation_return_value(invocation, @@ -461,8 +472,11 @@ static int __handle_request_uninstall(uid_t uid, } reqkey = __generate_reqkey(pkgid); - if (reqkey == NULL) + if (reqkey == NULL) { + g_dbus_method_invocation_return_value(invocation, + g_variant_new("(is)", PKGMGR_R_ENOMEM, "")); return -1; + } if (_pm_queue_push(target_uid, reqkey, PKGMGR_REQUEST_TYPE_UNINSTALL, pkgtype, pkgid, "")) { g_dbus_method_invocation_return_value(invocation, @@ -496,8 +510,11 @@ static int __handle_request_move(uid_t uid, } reqkey = __generate_reqkey(pkgid); - if (reqkey == NULL) + if (reqkey == NULL) { + g_dbus_method_invocation_return_value(invocation, + g_variant_new("(is)", PKGMGR_R_ENOMEM, "")); return -1; + } snprintf(buf, sizeof(buf), "%d", move_type); if (_pm_queue_push(target_uid, reqkey, PKGMGR_REQUEST_TYPE_MOVE, pkgtype, @@ -531,8 +548,11 @@ static int __handle_request_enable_pkg(uid_t uid, } reqkey = __generate_reqkey(pkgid); - if (reqkey == NULL) + if (reqkey == NULL) { + g_dbus_method_invocation_return_value(invocation, + g_variant_new("(i)", PKGMGR_R_ENOMEM)); return -1; + } if (_pm_queue_push(target_uid, reqkey, PKGMGR_REQUEST_TYPE_ENABLE_PKG, pkgtype, pkgid, "")) { @@ -565,8 +585,11 @@ static int __handle_request_disable_pkg(uid_t uid, } reqkey = __generate_reqkey(pkgid); - if (reqkey == NULL) + if (reqkey == NULL) { + g_dbus_method_invocation_return_value(invocation, + g_variant_new("(i)", PKGMGR_R_ENOMEM)); return -1; + } if (_pm_queue_push(target_uid, reqkey, PKGMGR_REQUEST_TYPE_DISABLE_PKG, pkgtype, pkgid, "")) { @@ -600,6 +623,8 @@ static int __handle_request_enable_app(uid_t uid, reqkey = __generate_reqkey(appid); if (reqkey == NULL) { + g_dbus_method_invocation_return_value(invocation, + g_variant_new("(is)", PKGMGR_R_ENOMEM, "")); ret = -1; goto catch; } @@ -641,6 +666,8 @@ static int __handle_request_disable_app(uid_t uid, reqkey = __generate_reqkey(appid); if (reqkey == NULL) { + g_dbus_method_invocation_return_value(invocation, + g_variant_new("(is)", PKGMGR_R_ENOMEM, "")); ret = -1; goto catch; } @@ -682,6 +709,8 @@ static int __handle_request_enable_global_app_for_uid(uid_t uid, reqkey = __generate_reqkey(appid); if (reqkey == NULL) { + g_dbus_method_invocation_return_value(invocation, + g_variant_new("(is)", PKGMGR_R_ENOMEM, "")); ret = -1; goto catch; } @@ -723,6 +752,8 @@ static int __handle_request_disable_global_app_for_uid(uid_t uid, reqkey = __generate_reqkey(appid); if (reqkey == NULL) { + g_dbus_method_invocation_return_value(invocation, + g_variant_new("(is)", PKGMGR_R_ENOMEM, "")); ret = -1; goto catch; } @@ -764,8 +795,11 @@ static int __handle_request_getsize(uid_t uid, } reqkey = __generate_reqkey(pkgid); - if (reqkey == NULL) + if (reqkey == NULL) { + g_dbus_method_invocation_return_value(invocation, + g_variant_new("(is)", PKGMGR_R_ENOMEM, "")); return -1; + } snprintf(buf, sizeof(buf), "%d", get_type); if (_pm_queue_push(target_uid, reqkey, PKGMGR_REQUEST_TYPE_GETSIZE, "pkgtool", @@ -799,8 +833,11 @@ static int __handle_request_cleardata(uid_t uid, } reqkey = __generate_reqkey(pkgid); - if (reqkey == NULL) + if (reqkey == NULL) { + g_dbus_method_invocation_return_value(invocation, + g_variant_new("(i)", PKGMGR_R_ENOMEM)); return -1; + } if (_pm_queue_push(target_uid, reqkey, PKGMGR_REQUEST_TYPE_CLEARDATA, pkgtype, pkgid, "")) { @@ -1025,6 +1062,8 @@ static int __update_app_splash_screen(uid_t uid, reqkey = __generate_reqkey(appid); if (reqkey == NULL) { ERR("Failed to generate request key"); + g_dbus_method_invocation_return_value(invocation, + g_variant_new("(i)", PKGMGR_R_ENOMEM)); return -1; } -- 2.7.4