From: Hwankyu Jhun Date: Tue, 11 Apr 2023 03:28:11 +0000 (+0000) Subject: Fix bugs of app_info_create() function X-Git-Tag: accepted/tizen/7.0/unified/20230417.041000~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=f1aeec746187427d5998ca5486786f33036fcbda;p=platform%2Fcore%2Fapi%2Fapp-manager.git Fix bugs of app_info_create() function - Fixes the wrong comparison - Fixes race condition Change-Id: I4d3dbd2999d9d8e30b978368ae8e676776df928f Signed-off-by: Hwankyu Jhun --- diff --git a/src/app_info.c b/src/app_info.c index d5d6327..66f2c49 100644 --- a/src/app_info.c +++ b/src/app_info.c @@ -20,6 +20,7 @@ #include #include #include +#include #include #include @@ -82,6 +83,7 @@ typedef struct app_context_s { } app_context_t; static app_context_t __context; +static pthread_mutex_t __mutex = PTHREAD_MUTEX_INITIALIZER; static int app_info_convert_str_property(const char *property, char **converted_property) { @@ -360,17 +362,22 @@ out: static void __app_context_initialize(void) { - if (__context.initialized) + pthread_mutex_lock(&__mutex); + if (__context.initialized) { + pthread_mutex_unlock(&__mutex); return; + } if (getuid() < REGULAR_UID_MIN) { __context.initialized = true; + pthread_mutex_unlock(&__mutex); return; } aul_app_get_appid_bypid(getpid(), __context.appid, sizeof(__context.appid)); __context.initialized = true; + pthread_mutex_unlock(&__mutex); } static int __app_info_create_by_alias_appid(const char *app_id, @@ -381,7 +388,7 @@ static int __app_info_create_by_alias_appid(const char *app_id, int ret; __app_context_initialize(); - if (__context.appid != NULL && !strcmp(__context.appid, app_id)) + if (__context.appid[0] != '\0' && !strcmp(__context.appid, app_id)) return APP_MANAGER_ERROR_INVALID_PARAMETER; ret = aul_svc_get_appid_by_alias_appid(app_id, &real_appid);