From: Yunjin Lee Date: Mon, 28 Nov 2016 06:38:46 +0000 (+0900) Subject: Add API to determine given privilege is privacy related or not on the basis of whitelist X-Git-Tag: submit/tizen/20161205.023558^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=c4e08b6575695e5c280033cc017b63d238b19a07;p=platform%2Fcore%2Fsecurity%2Fprivilege-checker.git Add API to determine given privilege is privacy related or not on the basis of whitelist Change-Id: I1df0f8dc4654124d3b052cc51dfd12c245f9bd69 Signed-off-by: Yunjin Lee --- diff --git a/capi/include/privilege_db_manager.h b/capi/include/privilege_db_manager.h index 4d5695f..7a6b2ee 100755 --- a/capi/include/privilege_db_manager.h +++ b/capi/include/privilege_db_manager.h @@ -76,6 +76,7 @@ int privilege_db_manager_get_privilege_group_display(privilege_db_manager_packag int privilege_db_manager_get_privacy_display(const char *privacy, char **privacy_display); int privilege_db_manager_is(char type, const char* privilege); +int privilege_db_manager_is_preloaded(const char* pkgid); int __privilege_db_manager_get_privacy_list(GList** privacy_list); int __privilege_db_manager_get_privilege_list_by_privacy(const char* privacy, GList **privilege_list); int privilege_db_manager_get_privacy_by_privilege(const char* privilege, char** privacy); diff --git a/capi/include/privilege_info.h b/capi/include/privilege_info.h index 33005dc..6ec83aa 100644 --- a/capi/include/privilege_info.h +++ b/capi/include/privilege_info.h @@ -131,6 +131,14 @@ EXPORT_API int privilege_info_is_internal(const char *privilege); */ EXPORT_API int privilege_info_is_privacy(const char *privilege); +/** + * @brief Determines whether the given privilege is privacy related or not.on the basis of whitelist + * @param [in] label The label + * @param [in] privilege The privilege + * @return 1 if true(=is privacy related privilege), 0 if false, and -1 on error + */ +EXPORT_API int privilege_info_is_privacy2(const char *label, const char *privilege); + /** * @brief Gets all privacy list. * @remarks @a privacy_list must be released with g_list_free() by you. diff --git a/capi/include/privilege_info_types.h b/capi/include/privilege_info_types.h index d334db0..04e31ed 100644 --- a/capi/include/privilege_info_types.h +++ b/capi/include/privilege_info_types.h @@ -32,6 +32,7 @@ typedef enum _privilegeGroup { MAX_PRV_GROUP, } privilegeGroup; +#define LOCATION_PRIVACY "http://tizen.org/privacy/location" #define EXTRA_GROUP MAX_PRV_GROUP - 1 typedef struct { diff --git a/capi/res/dbspace/core_db_generator.sh b/capi/res/dbspace/core_db_generator.sh index b553da4..7d5938b 100755 --- a/capi/res/dbspace/core_db_generator.sh +++ b/capi/res/dbspace/core_db_generator.sh @@ -7,18 +7,35 @@ echo "Creating $DB_NAME ..." touch $DB_NAME target_profile=$1 +preloaded="$target_profile""_preloaded.list" echo "Creating PRIVILEGE_INFO table ..." sqlite3 $DB_NAME "CREATE TABLE PRIVILEGE_INFO (PROFILE_ID NUMERIC, PROFILE TEXT, PACKAGE_TYPE_ID NUMERIC, PACKAGE_TYPE TEXT, PRIVILEGE_LEVEL_ID NUMERIC, PRIVILEGE_LEVEL TEXT, API_VERSION_ISSUED TEXT, API_VERSION_EXPIRED TEXT, DOCUMENTED INTEGER, PRIVILEGE_NAME TEXT, IS_PRIVACY NUMERIC, PRIVACY_GROUP TEXT, PRIVILEGE_DISPLAY TEXT, PRIVILEGE_DESCRIPTION TEXT, PRIVILEGE_GROUP_ID NUMERIC, PRIVLEGE_GROUP TEXT, CHANGED_TO_2_3_1 TEXT, CHANGED_TO_2_4_0 TEXT);" echo "Create VALID_PRIVILEGE_INFO Table..." -sqlite3 $DB_NAME "CREATE TABLE VALID_PRIVILEGE_INFO (PRIVILEGE_NAME TEXT UNIQUE, IS_PRIVACY NUMERIC, IS_INTERNAL NUMERIC);" +sqlite3 $DB_NAME "CREATE TABLE VALID_PRIVILEGE_INFO (PRIVILEGE_NAME TEXT UNIQUE, IS_PRIVACY NUMERIC, PRIVACY_GROUP TEXT, IS_INTERNAL NUMERIC);" echo "Create PRIVACY_INFO table..." sqlite3 $DB_NAME "CREATE TABLE PRIVACY_INFO (PRIVACY_GROUP TEXT UNIQUE, PRIVACY_DISPLAY TEXT);" +echo "Create PRELOADED table..." +sqlite3 $DB_NAME "CREATE TABLE PRELOADED (NAME TEXT)" + echo "Inserting data ..." IFS=$'\n' +for p in `cat $preloaded` +do + temp=`echo $p | awk '/^#/'` + if [ ! "$temp" = "" ] + then + continue + fi + NAME=`echo $p | cut -d "," -f 1` + sqlite3 $DB_NAME "insert into preloaded values ('$NAME')" +done + + + for i in `cat core_privilege_info.csv` do temp=`echo $i | awk '/^#/'` @@ -163,13 +180,13 @@ do echo "Inserting $PRIVILEGE_NAME ..." sqlite3 $DB_NAME "insert into privilege_info values ( $PROFILE_ID, '$PROFILE', $PACKAGE_TYPE_ID, '$PACKAGE_TYPE', $PRIVILEGE_LEVEL_ID, '$PRIVILEGE_LEVEL', '$API_VERSION_ISSUED', '$API_VERSION_EXPIRED', '$DOCUMENTED', '$PRIVILEGE_NAME', '$IS_PRIVACY', '$PRIVACY_GROUP', '$PRIVILEGE_DISPLAY', '$PRIVILEGE_DESCRIPTION', $PRIVILEGE_GROUP_ID, '$PRIVILEGE_GROUP', '$CHANGED_TO_2_3_1', '$CHANGED_TO_2_4_0')" - sqlite3 $DB_NAME "insert into valid_privilege_info (privilege_name, is_privacy, is_internal) values ('$PRIVILEGE_NAME', '$IS_PRIVACY', 0)" + sqlite3 $DB_NAME "insert into valid_privilege_info (privilege_name, is_privacy, privacy_group, is_internal) values ('$PRIVILEGE_NAME', '$IS_PRIVACY', '$PRIVACY_GROUP', 0)" done for internal_privilege in `cat internal_only.list` do echo "Inserting $internal_privilege ..." - sqlite3 $DB_NAME "insert into valid_privilege_info (privilege_name, is_privacy, is_internal) values ('$internal_privilege', 0, 1)" + sqlite3 $DB_NAME "insert into valid_privilege_info (privilege_name, is_privacy, privacy_group, is_internal) values ('$internal_privilege', 0, 'N/A', 1)" done echo "Insert into PRIVACY_INFO" diff --git a/capi/res/dbspace/core_mapping_db_generator.sh b/capi/res/dbspace/core_mapping_db_generator.sh index fc1333d..6d505eb 100755 --- a/capi/res/dbspace/core_mapping_db_generator.sh +++ b/capi/res/dbspace/core_mapping_db_generator.sh @@ -54,13 +54,14 @@ do sqlite3 $DB_NAME "insert into privilege_mapping values ( $PROFILE_ID, '$PROFILE', '$PRIVILEGE_NAME','$FROM_API_VERSION', '$TO_API_VERSION', '$MAPPED_PRIVILEGE_NAME')" if [[ $MAPPED_PRIVILEGE_NAME == *"/internal/"* ]]; then MAPPED_IS_PRIVACY=`sqlite3 .core_privilege_info.db "select is_privacy from privilege_info where privilege_name='$PRIVILEGE_NAME'"` + MAPPED_PRIVACY_GROUP=`sqlite3 .core_privilege_info.db "select privacy_group from privilege_info where privilege_name='$PRIVILEGE_NAME'"` if [ "$MAPPED_IS_PRIVACY" = "" ]; then - sqlite3 .core_privilege_info.db "insert or ignore into valid_privilege_info values ('$MAPPED_PRIVILEGE_NAME', 0, 1)" + sqlite3 .core_privilege_info.db "insert or ignore into valid_privilege_info values ('$MAPPED_PRIVILEGE_NAME', 0, 'N/A', 1)" else - sqlite3 .core_privilege_info.db "insert or ignore into valid_privilege_info values ('$MAPPED_PRIVILEGE_NAME', $MAPPED_IS_PRIVACY, 1)" + sqlite3 .core_privilege_info.db "insert or ignore into valid_privilege_info values ('$MAPPED_PRIVILEGE_NAME', $MAPPED_IS_PRIVACY, '$MAPPED_PRIVACY_GROUP', 1)" fi else - sqlite3 .core_privilege_info.db "insert or ignore into valid_privilege_info values ('$MAPPED_PRIVILEGE_NAME', 0, 0)" + sqlite3 .core_privilege_info.db "insert or ignore into valid_privilege_info values ('$MAPPED_PRIVILEGE_NAME', 0, 'N/A', 0)" fi done diff --git a/capi/res/dbspace/mobile_preloaded.list b/capi/res/dbspace/mobile_preloaded.list new file mode 100644 index 0000000..bcffca8 --- /dev/null +++ b/capi/res/dbspace/mobile_preloaded.list @@ -0,0 +1,84 @@ +User::Pkg::attach-panel-camera +User::Pkg::attach-panel-document +User::Pkg::attach-panel-gallery +User::Pkg::attach-panel-voicerecorder +User::Pkg::cert-svc-ui +User::Pkg::hangul +User::Pkg::ise-default +User::Pkg::ise-engine-anthy +User::Pkg::ise-engine-default +User::Pkg::ise-engine-sunpinyin +User::Pkg::net.netpopup +User::Pkg::net.wifi-qs +User::Pkg::org.tizen.app-selector +User::Pkg::org.tizen.bluetooth-share-ui +User::Pkg::org.tizen.browser +User::Pkg::org.tizen.bt-syspopup +User::Pkg::org.tizen.calendar +User::Pkg::org.tizen.call-setting +User::Pkg::org.tizen.call-ui +User::Pkg::org.tizen.callmgr-popup +User::Pkg::org.tizen.camera-app +User::Pkg::org.tizen.chromium-efl +User::Pkg::org.tizen.contacts +User::Pkg::org.tizen.crash-syspopup +User::Pkg::org.tizen.d2d-conv-setting +User::Pkg::org.tizen.d2d-conv-syspopup +User::Pkg::org.tizen.download-manager +User::Pkg::org.tizen.dpm-syspopup +User::Pkg::org.tizen.dpm-toolkit +User::Pkg::org.tizen.email +User::Pkg::org.tizen.gallery +User::Pkg::org.tizen.gps-syspopup +User::Pkg::org.tizen.heremaps-uc +User::Pkg::org.tizen.homescreen-efl +User::Pkg::org.tizen.image-viewer +User::Pkg::org.tizen.indicator +User::Pkg::org.tizen.inputmethod-setting +User::Pkg::org.tizen.isf-kbd-mode-changer +User::Pkg::org.tizen.kaskit +User::Pkg::org.tizen.keyguard +User::Pkg::org.tizen.krate-setup-wizard +User::Pkg::org.tizen.lockscreen +User::Pkg::org.tizen.menu-screen +User::Pkg::org.tizen.message +User::Pkg::org.tizen.msg-manager +User::Pkg::org.tizen.music-player +User::Pkg::org.tizen.myfile +User::Pkg::org.tizen.myplace +User::Pkg::org.tizen.ode +User::Pkg::org.tizen.overheat-syspopup +User::Pkg::org.tizen.powerkey-syspopup +User::Pkg::org.tizen.privacy-setting +User::Pkg::org.tizen.quickpanel +User::Pkg::org.tizen.screen-reader +User::Pkg::org.tizen.service-plugin-sample +User::Pkg::org.tizen.setting +User::Pkg::org.tizen.setting-homescreen +User::Pkg::org.tizen.setting-location +User::Pkg::org.tizen.setting-notification +User::Pkg::org.tizen.settings-adid +User::Pkg::org.tizen.share-panel +User::Pkg::org.tizen.stt-engine-default +User::Pkg::org.tizen.sys-lock +User::Pkg::org.tizen.system-signal-sender +User::Pkg::org.tizen.system-syspopup +User::Pkg::org.tizen.task-mgr +User::Pkg::org.tizen.tts-engine-default +User::Pkg::org.tizen.ug-gallery-efl +User::Pkg::org.tizen.ug-lockscreen-options +User::Pkg::org.tizen.ug-myfile-efl +User::Pkg::org.tizen.videos +User::Pkg::org.tizen.voice-control-panel +User::Pkg::org.tizen.voice-setting +User::Pkg::org.tizen.volume +User::Pkg::org.tizen.wallpaper-ui-service +User::Pkg::org.tizen.widget_viewer_sdk +User::Pkg::org.tizen.wifi-direct-popup +User::Pkg::org.tizen.worldclock-efl +User::Pkg::setting-myaccount-efl +User::Pkg::table +User::Pkg::ug-bluetooth-efl +User::Pkg::ug-setting-mobileap-efl +User::Pkg::ug-setting-wifidirect-efl +User::Pkg::wifi-efl-ug diff --git a/capi/res/dbspace/tv_core_db_generator.sh b/capi/res/dbspace/tv_core_db_generator.sh index f0c54bb..d4e711f 100755 --- a/capi/res/dbspace/tv_core_db_generator.sh +++ b/capi/res/dbspace/tv_core_db_generator.sh @@ -10,7 +10,7 @@ echo "Creating PRIVILEGE_INFO table ..." sqlite3 $DB_NAME "CREATE TABLE PRIVILEGE_INFO (PROFILE_ID NUMERIC, PROFILE TEXT, PACKAGE_TYPE_ID NUMERIC, PACKAGE_TYPE TEXT, PRIVILEGE_LEVEL_ID NUMERIC, PRIVILEGE_LEVEL TEXT, API_VERSION_ISSUED TEXT, API_VERSION_EXPIRED TEXT, DOCUMENTED INTEGER, PRIVILEGE_NAME TEXT, IS_PRIVACY NUMERIC, PRIVACY_GROUP TEXT, PRIVILEGE_DISPLAY TEXT, PRIVILEGE_DESCRIPTION TEXT, PRIVILEGE_GROUP_ID NUMERIC, PRIVLEGE_GROUP TEXT, CHANGED_TO_2_4_0 TEXT);" echo "Create VALID_PRIVILEGE_INFO Table..." -sqlite3 $DB_NAME "CREATE TABLE VALID_PRIVILEGE_INFO (PRIVILEGE_NAME TEXT UNIQUE, IS_PRIVACY NUMERIC, IS_INTERNAL NUMERIC);" +sqlite3 $DB_NAME "CREATE TABLE VALID_PRIVILEGE_INFO (PRIVILEGE_NAME TEXT UNIQUE, IS_PRIVACY NUMERIC, PRIVACY_GROUP TEXT, IS_INTERNAL NUMERIC);" echo "Create PRIVACY_INFO table..." sqlite3 $DB_NAME "CREATE TABLE PRIVACY_INFO (PRIVACY_GROUP TEXT UNIQUE, PRIVACY_DISPLAY TEXT);" @@ -48,6 +48,7 @@ do fi PACKAGE_TYPE=`echo $i | cut -d "," -f 2` + PRIVILEGE_GROUP=`echo $i | cut -d "," -f 13` if [ "$PACKAGE_TYPE" = "wrt" ] then @@ -56,9 +57,13 @@ do elif [ "$PACKAGE_TYPE" = "core" ] then PACKAGE_TYPE_ID=1 + elif [ "$PACKAGE_TYPE" = "metadata" ] + then + PACKAGE_TYPE_ID=2 + PRIVILEGE_GROUP="IDS_TPLATFORM_BODY_HARDWARE_CONTROLS_ABB" else - echo "Fail to create table : PACKAGE_TYPE must be wrt or core" + echo "Fail to create table : PACKAGE_TYPE must be metadata, wrt or core" exit fi @@ -105,7 +110,7 @@ do PRIVILEGE_DESCRIPTION=`echo $i | cut -d "," -f 12` - PRIVILEGE_GROUP=`echo $i | cut -d "," -f 13` + #PRIVILEGE_GROUP=`echo $i | cut -d "," -f 13` if [ "$PRIVILEGE_GROUP" = "IDS_TPLATFORM_BODY_HARDWARE_CONTROLS_ABB" ] then @@ -136,6 +141,7 @@ do PRIVILEGE_GROUP_ID=6 else + echo "PRIVILEGE_GROUP = $PRIVILEGE_GROUP" echo "Fail to create table : PRIVILEGE_GROUP must be one of them below" echo "IDS_TPLATFORM_BODY_HARDWARE_CONTROLS_ABB" echo "IDS_TPLATFORM_OPT_LOCATION_T_LBS" @@ -152,13 +158,13 @@ do echo "Inserting $PRIVILEGE_NAME ..." sqlite3 $DB_NAME "insert into privilege_info values ( $PROFILE_ID, '$PROFILE', $PACKAGE_TYPE_ID, '$PACKAGE_TYPE', $PRIVILEGE_LEVEL_ID, '$PRIVILEGE_LEVEL', '$API_VERSION_ISSUED', '$API_VERSION_EXPIRED', '$DOCUMENTED', '$PRIVILEGE_NAME', '$IS_PRIVACY', '$PRIVACY_GROUP', '$PRIVILEGE_DISPLAY', '$PRIVILEGE_DESCRIPTION', $PRIVILEGE_GROUP_ID, '$PRIVILEGE_GROUP', '$CHANGED_TO_2_4_0')" - sqlite3 $DB_NAME "insert into valid_privilege_info (privilege_name, is_privacy, is_internal) values ('$PRIVILEGE_NAME', '$IS_PRIVACY', 0)" + sqlite3 $DB_NAME "insert into valid_privilege_info (privilege_name, is_privacy, privacy_group, is_internal) values ('$PRIVILEGE_NAME', '$IS_PRIVACY', '$PRIVACY_GROUP', 0)" done for internal_privilege in `cat internal_only.list` do echo "Inserting $internal_privilege ..." - sqlite3 $DB_NAME "insert into valid_privilege_info (privilege_name, is_privacy, is_internal) values ('$internal_privilege', 0, 1)" + sqlite3 $DB_NAME "insert into valid_privilege_info (privilege_name, is_privacy, privacy_group, is_internal) values ('$internal_privilege', 0, 'N/A', 1)" done echo "Insert into PRIVACY_INFO" diff --git a/capi/res/dbspace/tv_core_mapping_db_generator.sh b/capi/res/dbspace/tv_core_mapping_db_generator.sh index a926a89..6f46eeb 100755 --- a/capi/res/dbspace/tv_core_mapping_db_generator.sh +++ b/capi/res/dbspace/tv_core_mapping_db_generator.sh @@ -49,9 +49,15 @@ do sqlite3 $DB_NAME "insert into privilege_mapping values ( $PROFILE_ID, '$PROFILE', '$PRIVILEGE_NAME','$FROM_API_VERSION', '$TO_API_VERSION', '$MAPPED_PRIVILEGE_NAME')" if [[ $MAPPED_PRIVILEGE_NAME == *"/internal/"* ]]; then - sqlite3 .core_privilege_info.db "insert or ignore into valid_privilege_info values ('$MAPPED_PRIVILEGE_NAME', 0, 1)" + MAPPED_IS_PRIVACY=`sqlite3 .core_privilege_info.db "select is_privacy from privilege_info where privilege_name='$PRIVILEGE_NAME'"` + MAPPED_PRIVACY_GROUP=`sqlite3 .core_privilege_info.db "select privacy_group from privilege_info where privilege_name='$PRIVILEGE_NAME'"` + if [ "$MAPPED_IS_PRIVACY" = "" ]; then + sqlite3 .core_privilege_info.db "insert or ignore into valid_privilege_info values ('$MAPPED_PRIVILEGE_NAME', 0, 'N/A', 1)" + else + sqlite3 .core_privilege_info.db "insert or ignore into valid_privilege_info values ('$MAPPED_PRIVILEGE_NAME', $MAPPED_IS_PRIVACY, '$MAPPED_PRIVACY_GROUP', 1)" + fi else - sqlite3 .core_privilege_info.db "insert or ignore into valid_privilege_info values ('$MAPPED_PRIVILEGE_NAME', 0, 0)" + sqlite3 .core_privilege_info.db "insert or ignore into valid_privilege_info values ('$MAPPED_PRIVILEGE_NAME', 0, 'N/A', 0)" fi done diff --git a/capi/res/dbspace/tv_core_privilege_info.csv b/capi/res/dbspace/tv_core_privilege_info.csv index 72e9ddb..1b62b84 100644 --- a/capi/res/dbspace/tv_core_privilege_info.csv +++ b/capi/res/dbspace/tv_core_privilege_info.csv @@ -98,3 +98,6 @@ tv,core,platform,2.4,9.9,no,http://tizen.org/privilege/web-history.admin,yes,htt tv,core,public,2.4,9.9,no,http://tizen.org/privilege/widget.viewer,no,N/A,,IDS_TPLATFORM_HEADER_SHOWING_WIDGETS,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_SHOW_WIDGETS_AND_INFORMATION_FROM_THEIR_ASSOCIATED_APPLICATIONS_ON_THE_HOME_SCREEN,IDS_TPLATFORM_BODY_SYSTEM_SETTINGS_ABB,, tv,core,public,2.4,9.9,no,http://tizen.org/privilege/wifidirect,no,N/A,,IDS_TPLATFORM_HEADER_MANAGING_WI_FI_DIRECT_INFORMATION,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_ENABLE_AND_DISABLE_WI_FI_DIRECT_MANAGE_WI_FI_DIRECT_CONNECTIONS_AND_CHANGE_WI_FI_DIRECT_SETTINGS,IDS_TPLATFORM_BODY_HARDWARE_CONTROLS_ABB,, tv,core,public,2.4,9.9,no,http://tizen.org/privilege/window.priority.set,no,N/A,,IDS_TPLATFORM_HEADER_DISPLAYING_WINDOWS_ON_TOP_OF_OTHER_APPLICATIONS_AND_SCREENS,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_APPEAR_ON_TOP_OF_OTHER_WINDOWS_AND_SCREENS_MSG,IDS_TPLATFORM_BODY_SYSTEM_SETTINGS_ABB,, +#tv,metadata,public,1,9.9,no,http://tizen.org/metadata/public,no,N/A,test,,,,, +#tv,metadata,partner,1,9.9,no,http://tizen.org/metadata/partner,no,N/A,test,,,,, +#tv,metadata,platform,1,9.9,no,http://tizen.org/metadata/platform,no,N/A,test,,,,, diff --git a/capi/res/dbspace/tv_wrt_mapping_db_generator.sh b/capi/res/dbspace/tv_wrt_mapping_db_generator.sh index da80233..a814f81 100755 --- a/capi/res/dbspace/tv_wrt_mapping_db_generator.sh +++ b/capi/res/dbspace/tv_wrt_mapping_db_generator.sh @@ -51,9 +51,9 @@ do sqlite3 $DB_NAME "insert into privilege_mapping values ( $PROFILE_ID, '$PROFILE', '$PRIVILEGE_NAME','$FROM_API_VERSION', '$TO_API_VERSION', '$MAPPED_PRIVILEGE_NAME')" if [[ $MAPPED_PRIVILEGE_NAME == *"/internal/"* ]]; then - sqlite3 .core_privilege_info.db "insert or ignore into valid_privilege_info values ('$MAPPED_PRIVILEGE_NAME', 0, 1)" + sqlite3 .core_privilege_info.db "insert or ignore into valid_privilege_info values ('$MAPPED_PRIVILEGE_NAME', 0, 'N/A', 1)" else - sqlite3 .core_privilege_info.db "insert or ignore into valid_privilege_info values ('$MAPPED_PRIVILEGE_NAME', 0, 0)" + sqlite3 .core_privilege_info.db "insert or ignore into valid_privilege_info values ('$MAPPED_PRIVILEGE_NAME', 0, 'N/A', 0)" fi done diff --git a/capi/res/dbspace/wearable_preloaded.list b/capi/res/dbspace/wearable_preloaded.list new file mode 100644 index 0000000..19d6f30 --- /dev/null +++ b/capi/res/dbspace/wearable_preloaded.list @@ -0,0 +1,33 @@ +User::Pkg::ise-default +User::Pkg::ise-engine-default +User::Pkg::org.tizen.alarm +User::Pkg::org.tizen.app-selector +User::Pkg::org.tizen.bluetooth +User::Pkg::org.tizen.bt-syspopup +User::Pkg::org.tizen.chromium-efl +User::Pkg::org.tizen.classic-watch +User::Pkg::org.tizen.crash-syspopup +User::Pkg::org.tizen.dpm-syspopup +User::Pkg::org.tizen.dpm-toolkit +User::Pkg::org.tizen.elm-demo-tizen-wearable +User::Pkg::org.tizen.heremaps-uc +User::Pkg::org.tizen.idle-clock-digital +User::Pkg::org.tizen.inputdelegator +User::Pkg::org.tizen.inputmethod-setting +User::Pkg::org.tizen.my-account +User::Pkg::org.tizen.nfc-setting-app +User::Pkg::org.tizen.ode +User::Pkg::org.tizen.powerkey-syspopup +User::Pkg::org.tizen.privacy-setting +User::Pkg::org.tizen.screen-reader +User::Pkg::org.tizen.stopwatch +User::Pkg::org.tizen.stt-engine-default +User::Pkg::org.tizen.system-syspopup +User::Pkg::org.tizen.task-mgr +User::Pkg::org.tizen.timer +User::Pkg::org.tizen.tts-engine-default +User::Pkg::org.tizen.w-home +User::Pkg::org.tizen.w-wifi +User::Pkg::org.tizen.watch-setting +User::Pkg::org.tizen.widget_viewer_sdk +User::Pkg::org.tizen.windicator diff --git a/capi/res/dbspace/wrt_mapping_db_generator.sh b/capi/res/dbspace/wrt_mapping_db_generator.sh index 68188ec..255022a 100755 --- a/capi/res/dbspace/wrt_mapping_db_generator.sh +++ b/capi/res/dbspace/wrt_mapping_db_generator.sh @@ -51,9 +51,9 @@ do sqlite3 $DB_NAME "insert into privilege_mapping values ( $PROFILE_ID, '$PROFILE', '$PRIVILEGE_NAME','$FROM_API_VERSION', '$TO_API_VERSION', '$MAPPED_PRIVILEGE_NAME')" if [[ $MAPPED_PRIVILEGE_NAME == *"/internal/"* ]]; then - sqlite3 .core_privilege_info.db "insert or ignore into valid_privilege_info values ('$MAPPED_PRIVILEGE_NAME', 0, 1)" + sqlite3 .core_privilege_info.db "insert or ignore into valid_privilege_info values ('$MAPPED_PRIVILEGE_NAME', 0, 'N/A', 1)" else - sqlite3 .core_privilege_info.db "insert or ignore into valid_privilege_info values ('$MAPPED_PRIVILEGE_NAME', 0, 0)" + sqlite3 .core_privilege_info.db "insert or ignore into valid_privilege_info values ('$MAPPED_PRIVILEGE_NAME', 0, 'N/A', 0)" fi done diff --git a/capi/src/privilege_db_manager.c b/capi/src/privilege_db_manager.c index cf0cfbd..7442d31 100755 --- a/capi/src/privilege_db_manager.c +++ b/capi/src/privilege_db_manager.c @@ -285,11 +285,7 @@ int privilege_db_manager_get_mapped_privilege_list(const char *api_version, priv ret = __make_privilege_list_str(privilege_list, &privilege_list_str); TryReturn(ret == 0 && privilege_list_str != NULL, sqlite3_close(db), PRIVILEGE_DB_MANAGER_ERR_OUT_OF_MEMORY, "[PRIVILEGE_DB_MANAGER_ERR_OUT_OF_MEMORY] making privilege_list_str for where in query is failed."); - char *sql = NULL; - if (api_version == NULL) - sql = sqlite3_mprintf("select distinct mapped_privilege_name from privilege_mapping where privilege_name in(%s)and(profile_id=%d or profile_id=%d)", privilege_list_str, PRIVILEGE_DB_MANAGER_PROFILE_TYPE_COMMON, g_privilege_db_manager_profile_type); - else - sql = sqlite3_mprintf("select distinct mapped_privilege_name from privilege_mapping where privilege_name in(%s)and(profile_id=%d or profile_id=%d)and from_api_version<=%Q and to_api_version>%Q", privilege_list_str, PRIVILEGE_DB_MANAGER_PROFILE_TYPE_COMMON, g_privilege_db_manager_profile_type, api_version, api_version); + char *sql = sqlite3_mprintf("select distinct mapped_privilege_name from privilege_mapping where privilege_name in(%s)and(profile_id=%d or profile_id=%d)and from_api_version<=%Q and to_api_version>%Q", privilege_list_str, PRIVILEGE_DB_MANAGER_PROFILE_TYPE_COMMON, g_privilege_db_manager_profile_type, api_version, api_version); sqlite3_free(privilege_list_str); TryReturn(sql != NULL, __finalize_db(db, stmt, sql), PRIVILEGE_DB_MANAGER_ERR_INVALID_QUERY, "[DB_FAIL] sqlite3_mprintf failed"); @@ -468,8 +464,8 @@ int privilege_db_manager_is(char type, const char* privilege) int ret = __initialize_db('i', &db, PRIVILEGE_DB_MANAGER_PACKAGE_TYPE_CORE); TryReturn(ret == PRIVILEGE_DB_MANAGER_ERR_NONE, , ret, "[PRIVILEGE_DB_MANAGER] DB INITIALIZE FAIL"); - char *sql = sqlite3_mprintf("select * from valid_privilege_info where privilege_name=%Q", privilege); - TryReturn(sql != NULL, __finalize_db(db, stmt, sql), PRIVILEGE_DB_MANAGER_ERR_INVALID_QUERY, "[DB_FAIL] sqlite3_mprintf failed"); + char *sql = sqlite3_mprintf("select privilege_name,is_privacy, is_internal from valid_privilege_info where privilege_name=%Q", privilege); + TryReturn(sql != NULL, __finalize_db(db, stmt, sql), -PRIVILEGE_DB_MANAGER_ERR_INVALID_QUERY, "[DB_FAIL] sqlite3_mprintf failed"); ret = sqlite3_prepare_v2(db, sql, strlen(sql), &stmt, NULL); TryReturn(ret == SQLITE_OK, __finalize_db(db, stmt, sql), -PRIVILEGE_DB_MANAGER_ERR_INVALID_QUERY, "[DB_FAIL] fail to prepare database : %s", sqlite3_errmsg(db)); @@ -504,6 +500,29 @@ int privilege_db_manager_is(char type, const char* privilege) return res; } +int privilege_db_manager_is_preloaded(const char* pkgid) +{ + sqlite3 *db = NULL; + sqlite3_stmt *stmt = NULL; + int ret = __initialize_db('i', &db, PRIVILEGE_DB_MANAGER_PACKAGE_TYPE_CORE); + TryReturn(ret == PRIVILEGE_DB_MANAGER_ERR_NONE, , ret, "[PRIVILEGE_DB_MANAGER] DB INITIALIZE FAIL"); + + char *sql = sqlite3_mprintf("select * from preloaded where name=%Q", pkgid); + TryReturn(sql != NULL, __finalize_db(db, stmt, sql), PRIVILEGE_DB_MANAGER_ERR_INVALID_QUERY, "[DB_FAIL] sqlite3_mprintf failed"); + ret = sqlite3_prepare_v2(db, sql, strlen(sql), &stmt, NULL); + TryReturn(ret == SQLITE_OK, __finalize_db(db, stmt, sql), PRIVILEGE_DB_MANAGER_ERR_INVALID_QUERY, "[DB_FAIL] fail to prepare database : %s", sqlite3_errmsg(db)); + + ret = sqlite3_step(stmt); + __finalize_db(db, stmt, sql); + if (ret == SQLITE_ROW) { + _LOGD("%s is preloaded", pkgid); + return 1; + } else { + _LOGD("ret = %s", sqlite3_errmsg(db)); + return 0; + } +} + int __privilege_db_manager_get_privacy_list(GList **privacy_list) { sqlite3 *db = NULL; @@ -546,7 +565,7 @@ int __privilege_db_manager_get_privilege_list_by_privacy(const char* privacy, GL if (ret != PRIVILEGE_DB_MANAGER_ERR_NONE) return ret; - char *sql = sqlite3_mprintf("select distinct privilege_name from privilege_info where is_privacy=1 and privacy_group=%Q", privacy); + char *sql = sqlite3_mprintf("select distinct privilege_name from valid_privilege_info where is_privacy=1 and privacy_group=%Q", privacy); TryReturn(sql != NULL, __finalize_db(db, stmt, sql), PRIVILEGE_DB_MANAGER_ERR_INVALID_QUERY, "[DB_FAIL] sqlite3_mprintf failed"); ret = sqlite3_prepare_v2(db, sql, strlen(sql), &stmt, NULL); if (ret != SQLITE_OK) { @@ -566,12 +585,7 @@ int __privilege_db_manager_get_privilege_list_by_privacy(const char* privacy, GL __finalize_db(db, stmt, sql); - GList* temp_mapped_privilege_list = NULL; - ret = privilege_db_manager_get_mapped_privilege_list(NULL, PRIVILEGE_DB_MANAGER_PACKAGE_TYPE_CORE, temp_privilege_list, &temp_mapped_privilege_list); - TryReturn(ret == PRIVILEGE_DB_MANAGER_ERR_NONE && temp_mapped_privilege_list != NULL, g_list_free(temp_privilege_list), ret, "[DB_FAIL] privilege_db_manager_get_mapped_privilege_list failed"); - - *privilege_list = temp_mapped_privilege_list; - g_list_free(temp_privilege_list); + *privilege_list = temp_privilege_list; return PRIVILEGE_DB_MANAGER_ERR_NONE; @@ -585,7 +599,7 @@ int privilege_db_manager_get_privacy_by_privilege(const char* privilege, char** if (ret != PRIVILEGE_DB_MANAGER_ERR_NONE) return ret; - char *sql = sqlite3_mprintf("select privacy_group from privilege_info where privilege_name=%Q", privilege); + char *sql = sqlite3_mprintf("select privacy_group from valid_privilege_info where privilege_name=%Q", privilege); TryReturn(sql != NULL, __finalize_db(db, stmt, sql), PRIVILEGE_DB_MANAGER_ERR_INVALID_QUERY, "[DB_FAIL] sqlite3_mprintf failed"); ret = sqlite3_prepare_v2(db, sql, strlen(sql), &stmt, NULL); if (ret != SQLITE_OK) { diff --git a/capi/src/privilege_info.c b/capi/src/privilege_info.c index accd26e..7dc7619 100755 --- a/capi/src/privilege_info.c +++ b/capi/src/privilege_info.c @@ -238,20 +238,22 @@ int privilege_info_get_privilege_group_display_name(const char *privilege_group, ret = privilege_info_get_group_name_string_id(privilege_group, &name_string_id); if (name_string_id == NULL) { - char tempPrivilegeGroup[256] = { 0, }; + char *tempPrivilegeGroup = NULL;; char *temp = NULL; char *buffer = NULL; char *save = NULL; - memcpy(tempPrivilegeGroup, privilege_group, strlen(privilege_group)); + + tempPrivilegeGroup = strdup(privilege_group); + TryReturn(tempPrivilegeGroup != NULL, , PRVMGR_ERR_OUT_OF_MEMORY, "[PRVMGR_ERR_OUT_OF_MEMORY] tempPrivilegeGroup's strdup failed"); + temp = strtok_r(tempPrivilegeGroup, "/", &save); while (temp) { buffer = temp; temp = strtok_r(NULL, "/", &save); } - *name = (char *)calloc(strlen(buffer) + 1, sizeof(char)); - TryReturn(*name != NULL, , PRVMGR_ERR_OUT_OF_MEMORY, "[PRVMGR_ERR_OUT_OF_MEMORY] Memory allocation failed."); - - memcpy(*name, buffer, strlen(buffer)); + *name = strdup(buffer); + TryReturn(*name != NULL, free(tempPrivilegeGroup), PRVMGR_ERR_OUT_OF_MEMORY, "[PRVMGR_ERR_OUT_OF_MEMORY] Memory allocation failed."); + free(tempPrivilegeGroup); } else { ret = privilege_info_get_privilege_string_by_string_id(name_string_id, name); free(name_string_id); @@ -505,12 +507,53 @@ int privilege_info_get_privilege_description(const char *privilege, char **descr int privilege_info_is_privacy(const char* privilege) { TryReturn(privilege != NULL, , PRVMGR_ERR_INVALID_PARAMETER, "[PRVMGR_ERR_INVALID_PARAMETER] privilege is NULL"); - +#ifdef PROFILE_TYPE_TV + return 0; +#else int ret = privilege_db_manager_is('p', privilege); LOGD("%s is privacy? %d", privilege, ret); if (ret != 0 && ret != 1) ret = -1; return ret; +#endif +} + +int privilege_info_is_privacy2(const char* label, const char* privilege) +{ + TryReturn(privilege != NULL, , PRVMGR_ERR_INVALID_PARAMETER, "[PRVMGR_ERR_INVALID_PARAMETER] privilege is NULL"); + if (label == NULL) + return privilege_info_is_privacy(privilege); +#ifdef PROFILE_TYPE_TV + return 0; +#else + int ret = privilege_db_manager_is('p', privilege); + TryReturn(ret >= 0, , -1, "privilege_db_manager_get_privacy_by_privilege failed. ret = %d", ret); + if (ret == 0) { + LOGD("not privacy"); + return 0; + } else { + char *privacy = NULL; + ret = privilege_db_manager_get_privacy_by_privilege(privilege, &privacy); + TryReturn(ret == PRIVILEGE_DB_MANAGER_ERR_NONE && privacy != NULL, , ret, "[DB_FAIL] privilege_db_manager_get_privacy_by_privilege failed. ret = %d", ret); + LOGD("privacy : %s", privacy); + if (!strcmp(privacy, LOCATION_PRIVACY)) { + ret = 1; + } else { + ret = privilege_db_manager_is_preloaded(label); + if (ret == 1) { /* Is preloaded */ + ret = 0; + } else if (ret == 0) { + ret = 1; + } else { + LOGD("privilege_db_manager_is_preloaded failed. ret = %d", ret); + ret = -1; + } + } + free(privacy); + LOGD("final ret = %d", ret); + return ret; + } +#endif } int privilege_info_is_valid(const char* privilege) diff --git a/capi/src/privilege_manager.c b/capi/src/privilege_manager.c index a6670e6..7d4ae49 100755 --- a/capi/src/privilege_manager.c +++ b/capi/src/privilege_manager.c @@ -39,7 +39,7 @@ typedef u_int32_t api_version_code_t; -static int __get_api_version_code(const char *api_version, api_version_code_t *api_version_code ) +static int __get_api_version_code(const char *api_version, api_version_code_t *api_version_code) { TryReturn(api_version != NULL, , PRVMGR_ERR_INVALID_PARAMETER, "[PRVMGR_ERR_INVALID_PARAMETER] api_version is NULL"); @@ -49,8 +49,7 @@ static int __get_api_version_code(const char *api_version, api_version_code_t *a char ch = *api_version; int is_number = 0; - while (ch != 0) - { + while (ch != 0) { if (isdigit(ch)) { is_number = 1; value = 0; @@ -327,11 +326,11 @@ int privilege_manager_verify_privilege(uid_t uid, const char *api_version, privi TryReturn(noexist_message != NULL, ret_val = PRVMGR_ERR_OUT_OF_MEMORY; goto FINISH, PRVMGR_ERR_OUT_OF_MEMORY, "[PRVMGR_ERR_OUT_OF_MEMORY] noexist_message's strdup is failed."); } size_t new_size = snprintf(0, 0, "%s%s", noexist_message, message) + 1; - noexist_message = realloc(noexist_message, new_size * sizeof(char)); - TryReturn(noexist_message != NULL, ret_val = PRVMGR_ERR_OUT_OF_MEMORY; goto FINISH, PRVMGR_ERR_OUT_OF_MEMORY, "[PRVMGR_ERR_OUT_OF_MEMORY] noexist_message's realloc is failed."); + char *tmp_message = realloc(noexist_message, new_size * sizeof(char)); + TryReturn(tmp_message != NULL, ret_val = PRVMGR_ERR_OUT_OF_MEMORY; goto FINISH, PRVMGR_ERR_OUT_OF_MEMORY, "[PRVMGR_ERR_OUT_OF_MEMORY] noexist_message's realloc is failed."); + noexist_message = tmp_message; strncat(noexist_message, message, strlen(message)); - ret_val = PRVMGR_ERR_INVALID_PRIVILEGE; } else if (ret == PRVMGR_ERR_DEPRECATED_PRIVILEGE) { @@ -350,11 +349,11 @@ int privilege_manager_verify_privilege(uid_t uid, const char *api_version, privi TryReturn(deprecated_message != NULL, ret_val = PRVMGR_ERR_OUT_OF_MEMORY; goto FINISH, PRVMGR_ERR_OUT_OF_MEMORY, "[PRVMGR_ERR_OUT_OF_MEMORY] deprecated_message's strdup is failed."); } size_t new_size = snprintf(0, 0, "%s%s", deprecated_message, message) + 1; - deprecated_message = realloc(deprecated_message, new_size * sizeof(char)); - TryReturn(deprecated_message != NULL, ret_val = PRVMGR_ERR_OUT_OF_MEMORY; goto FINISH, PRVMGR_ERR_OUT_OF_MEMORY, "[PRVMGR_ERR_OUT_OF_MEMORY] deprecated_message's realloc is failed."); + char *tmp_message = realloc(deprecated_message, new_size * sizeof(char)); + TryReturn(tmp_message != NULL, ret_val = PRVMGR_ERR_OUT_OF_MEMORY; goto FINISH, PRVMGR_ERR_OUT_OF_MEMORY, "[PRVMGR_ERR_OUT_OF_MEMORY] deprecated_message's realloc is failed."); + deprecated_message = tmp_message; strncat(deprecated_message, message, strlen(message)); - ret_val = PRVMGR_ERR_INVALID_PRIVILEGE; } else if (ret == PRVMGR_ERR_NONE) { @@ -374,10 +373,11 @@ int privilege_manager_verify_privilege(uid_t uid, const char *api_version, privi TryReturn(mismatched_message != NULL, ret_val = PRVMGR_ERR_OUT_OF_MEMORY; goto FINISH, PRVMGR_ERR_OUT_OF_MEMORY, "[PRVMGR_ERR_OUT_OF_MEMORY] mismatched_message's strdup is failed."); } size_t new_size = snprintf(0, 0, "%s%s", mismatched_message, message) + 1; - mismatched_message = realloc(mismatched_message, new_size * sizeof(char)); - TryReturn(mismatched_message != NULL, ret_val = PRVMGR_ERR_OUT_OF_MEMORY; goto FINISH, PRVMGR_ERR_OUT_OF_MEMORY, "[PRVMGR_ERR_OUT_OF_MEMORY] mismatched_message's realloc is failed."); - strncat(mismatched_message, message, strlen(message)); + char *tmp_message = realloc(mismatched_message, new_size * sizeof(char)); + TryReturn(tmp_message != NULL, ret_val = PRVMGR_ERR_OUT_OF_MEMORY; goto FINISH, PRVMGR_ERR_OUT_OF_MEMORY, "[PRVMGR_ERR_OUT_OF_MEMORY] mismatched_message's realloc is failed."); + mismatched_message = tmp_message; + strncat(mismatched_message, message, strlen(message)); ret_val = PRVMGR_ERR_INVALID_PRIVILEGE; } } else if ((visibility & PRVMGR_PACKAGE_VISIBILITY_PARTNER) == PRVMGR_PACKAGE_VISIBILITY_PARTNER) { @@ -393,8 +393,10 @@ int privilege_manager_verify_privilege(uid_t uid, const char *api_version, privi TryReturn(mismatched_message != NULL, ret_val = PRVMGR_ERR_OUT_OF_MEMORY; goto FINISH, PRVMGR_ERR_OUT_OF_MEMORY, "[PRVMGR_ERR_OUT_OF_MEMORY] mismatched_message's strdup is failed."); } size_t new_size = snprintf(0, 0, "%s%s", mismatched_message, message) + 1; - mismatched_message = realloc(mismatched_message, new_size * sizeof(char)); - TryReturn(mismatched_message, ret_val = PRVMGR_ERR_OUT_OF_MEMORY; goto FINISH, PRVMGR_ERR_OUT_OF_MEMORY, "[PRVMGR_ERR_OUT_OF_MEMORY] mismatched_message's realloc is failed."); + char *tmp_message = realloc(mismatched_message, new_size * sizeof(char)); + TryReturn(tmp_message, ret_val = PRVMGR_ERR_OUT_OF_MEMORY; goto FINISH, PRVMGR_ERR_OUT_OF_MEMORY, "[PRVMGR_ERR_OUT_OF_MEMORY] mismatched_message's realloc is failed."); + mismatched_message = tmp_message; + strncat(mismatched_message, message, strlen(message)); ret_val = PRVMGR_ERR_INVALID_PRIVILEGE; } @@ -422,28 +424,32 @@ int privilege_manager_verify_privilege(uid_t uid, const char *api_version, privi TryReturn(message_list != NULL, ret_val = PRVMGR_ERR_OUT_OF_MEMORY; goto FINISH, PRVMGR_ERR_OUT_OF_MEMORY, "[PRVMGR_ERR_OUT_OF_MEMORY] message_list's strdup is failed."); if (noexist_message != NULL) { size_t new_size = snprintf(0, 0, "%s[NO_EXIST_PRIVILEGE]|%s", message_list, noexist_message) + 1; - message_list = realloc(message_list, new_size); - TryReturn(message_list != NULL, ret_val = PRVMGR_ERR_OUT_OF_MEMORY; goto FINISH, PRVMGR_ERR_OUT_OF_MEMORY, "[PRVMGR_ERR_OUT_OF_MEMORY] message_list's realloc is failed."); + char *tmp_message_list = realloc(message_list, new_size); + TryReturn(tmp_message_list != NULL, ret_val = PRVMGR_ERR_OUT_OF_MEMORY; goto FINISH, PRVMGR_ERR_OUT_OF_MEMORY, "[PRVMGR_ERR_OUT_OF_MEMORY] message_list's realloc is failed."); + message_list = tmp_message_list; strncat(message_list, "[NO_EXIST_PRIVILEGE]|", strlen("[NO_EXIST_PRIVILEGE]|")); strncat(message_list, noexist_message, strlen(noexist_message)); } if (deprecated_message != NULL) { size_t new_size = snprintf(0, 0, "%s[DEPRECATED_PRIVILEGE]|%s", message_list, deprecated_message) + 1; - message_list = realloc(message_list, new_size); - TryReturn(message_list != NULL, ret_val = PRVMGR_ERR_OUT_OF_MEMORY; goto FINISH, PRVMGR_ERR_OUT_OF_MEMORY, "[PRVMGR_ERR_OUT_OF_MEMORY] message_list's realloc is failed."); + char *tmp_message_list = realloc(message_list, new_size); + TryReturn(tmp_message_list != NULL, ret_val = PRVMGR_ERR_OUT_OF_MEMORY; goto FINISH, PRVMGR_ERR_OUT_OF_MEMORY, "[PRVMGR_ERR_OUT_OF_MEMORY] message_list's realloc is failed."); + message_list = tmp_message_list; strncat(message_list, "[DEPRECATED_PRIVILEGE]|", strlen("[DEPRECATED_PRIVILEGE]|")); strncat(message_list, deprecated_message, strlen(deprecated_message)); } if (mismatched_message != NULL) { size_t new_size = snprintf(0, 0, "%s[MISMATCHED_PRIVILEGE_LEVEL]|%s", message_list, mismatched_message) + 1; - message_list = realloc(message_list, new_size); - TryReturn(message_list != NULL, ret_val = PRVMGR_ERR_OUT_OF_MEMORY; goto FINISH, PRVMGR_ERR_OUT_OF_MEMORY, "[PRVMGR_ERR_OUT_OF_MEMORY] message_list's realloc is failed."); + char *tmp_message_list = realloc(message_list, new_size); + TryReturn(tmp_message_list != NULL, ret_val = PRVMGR_ERR_OUT_OF_MEMORY; goto FINISH, PRVMGR_ERR_OUT_OF_MEMORY, "[PRVMGR_ERR_OUT_OF_MEMORY] message_list's realloc is failed."); + message_list = tmp_message_list; strncat(message_list, "[MISMATCHED_PRIVILEGE_LEVEL]|", strlen("[MISMATCHED_PRIVILEGE_LEVEL]|")); strncat(message_list, mismatched_message, strlen(mismatched_message)); } size_t total_size = snprintf(0, 0, "%s%s", message_list, newline) + 1; - message_list = realloc(message_list, total_size); - TryReturn(message_list != NULL, ret_val = PRVMGR_ERR_OUT_OF_MEMORY; goto FINISH, PRVMGR_ERR_OUT_OF_MEMORY, "[PRVMGR_ERR_OUT_OF_MEMORY] message_list's realloc is failed."); + char* tmp_message_list = realloc(message_list, total_size); + TryReturn(tmp_message_list != NULL, ret_val = PRVMGR_ERR_OUT_OF_MEMORY; goto FINISH, PRVMGR_ERR_OUT_OF_MEMORY, "[PRVMGR_ERR_OUT_OF_MEMORY] message_list's realloc is failed."); + message_list = tmp_message_list; strncat(message_list, newline, strlen(newline)); *error_message = strdup(message_list); TryReturn(error_message != NULL, ret_val = PRVMGR_ERR_OUT_OF_MEMORY; goto FINISH, PRVMGR_ERR_OUT_OF_MEMORY, "[PRVMGR_ERR_OUT_OF_MEMORY] error_message's strdup is failed."); diff --git a/test/tc-privilege-info.c b/test/tc-privilege-info.c index fd14386..f934058 100755 --- a/test/tc-privilege-info.c +++ b/test/tc-privilege-info.c @@ -259,7 +259,7 @@ static void __test_privilege_info_get_privacy_display() printf("WRONG privacy: http://tizen.org/privilege/account.read\n"); ret = privilege_info_get_privacy_display("http://tizen.org/privilege/account.read", &privacy_display); - if(ret == PRVMGR_ERR_INVALID_PARAMETER && privacy_display == NULL) { + if (ret == PRVMGR_ERR_INVALID_PARAMETER && privacy_display == NULL) { success_cnt++; printf("SUCCESS\n"); } else { @@ -272,7 +272,7 @@ static void __test_privilege_info_get_privacy_display() printf("NULL param\n"); ret = privilege_info_get_privacy_display(NULL, &privacy_display); - if(ret == PRVMGR_ERR_INVALID_PARAMETER && privacy_display == NULL) { + if (ret == PRVMGR_ERR_INVALID_PARAMETER && privacy_display == NULL) { success_cnt++; printf("SUCCESS\n"); } else { @@ -464,7 +464,7 @@ static void __test_privilege_info_get_privilege_description() __print_line(); } -static void __test__privilege_info_get_privilege_group_display_name() +static void __test_privilege_info_get_privilege_group_display_name() { int ret; char *group_name = NULL; @@ -480,6 +480,12 @@ static void __test__privilege_info_get_privilege_group_display_name() __check_get_privilege_group_display_name_result(PRVMGR_ERR_NONE, ret, group_name); free(group_name); + printf("privilege : unknowngroup\n"); + group_name = NULL; + ret = privilege_info_get_privilege_group_display_name("unknowngroup", &group_name); + __check_get_privilege_group_display_name_result(PRVMGR_ERR_NONE, ret, group_name); + free(group_name); + printf("privilege : NULL\n"); group_name = NULL; ret = privilege_info_get_privilege_group_display_name(NULL, &group_name); @@ -488,6 +494,120 @@ static void __test__privilege_info_get_privilege_group_display_name() } +static void __test_privilege_info_is_privacy2() +{ +#ifndef PROFILE_TYPE_TV + int ret = 0; + + printf("PRELOADED + NOT LOCATION PRIVACY -> ALLOW (not privacy)\n"); + printf("pkgid: User::Pkg::org.tizen.privacy-setting\n"); + printf("privilege : http://tizen.org/privilege/account.read\n"); + ret = privilege_info_is_privacy2("User::Pkg::org.tizen.privacy-setting", "http://tizen.org/privilege/account.read"); + if (ret == 0) { + success_cnt++; + printf("SUCCESS: http://tizen.org/privilege/account.read is PRIVACY but NOT LOCATION and pkg is PRELOADED\n"); + } else { + fail_cnt++; + printf("Test FAILED. ret = %d\n", ret); + } + __print_line(); + + printf("PRELOADED + LOCATION PRIVACY -> ASK (privacy)\n"); + printf("pkgid: User::Pkg::org.tizen.privacy-setting\n"); + printf("privilege : http://tizen.org/privilege/internal/buxton/location\n"); + ret = privilege_info_is_privacy2("User::Pkg::org.tizen.privacy-setting", "http://tizen.org/privilege/internal/buxton/location"); + if (ret == 1) { + success_cnt++; + printf("SUCCESS: http://tizen.org/privilege/internal/buxton/location is LOCATION PRIVACY and pkg is PRELOADED\n"); + } else { + fail_cnt++; + printf("Test FAILED. ret = %d\n", ret); + } + __print_line(); + + printf("PRELOADED + NOT PRIVACY -> ALLOW (not privacy)\n"); + printf("pkgid: User::Pkg::org.tizen.privacy-setting\n"); + printf("privilege : http://tizen.org/privilege/internet\n"); + ret = privilege_info_is_privacy2("User::Pkg::org.tizen.privacy-setting", "http://tizen.org/privilege/internet"); + if (ret == 0) { + success_cnt++; + printf("SUCCESS: http://tizen.org/privilege/internet is NOT PRIVACY\n"); + } else { + fail_cnt++; + printf("Test FAILED. ret = %d\n", ret); + } + __print_line(); + + printf("NOT PRELOADED + NOT LOCATION PRIVACY -> ASK (privacy)\n"); + printf("pkgid: User::Pkg::org.test.privacy\n"); + printf("privilege : http://tizen.org/privilege/account.read\n"); + ret = privilege_info_is_privacy2("User::Pkg::org.test.privacy", "http://tizen.org/privilege/account.read"); + if (ret == 1) { + success_cnt++; + printf("SUCCESS: http://tizen.org/privilege/account.read is PRIVACY but NOT LOCATION and pkg is NOT PRELOADED\n"); + } else { + fail_cnt++; + printf("Test FAILED. ret = %d\n", ret); + } + __print_line(); + + printf("NOT PRELOADED + LOCATION PRIVACY -> ASK (privacy)\n"); + printf("pkgid: User::Pkg::org.test.privacy\n"); + printf("privilege : http://tizen.org/privilege/location.coarse\n"); + ret = privilege_info_is_privacy2("User::Pkg::org.test.privacy", "http://tizen.org/privilege/location.coarse"); + if (ret == 1) { + success_cnt++; + printf("SUCCESS: http://tizen.org/privilege/location.coarse is LOCATION PRIVACY and pkg is NOT PRELOADED\n"); + } else { + fail_cnt++; + printf("Test FAILED. ret = %d\n", ret); + } + __print_line(); + + printf("NOT PRELOADED + NOT PRIVACY -> ALLOW (not privacy)\n"); + printf("pkgid: User::Pkg::org.test.privacy\n"); + printf("privilege : http://tizen.org/privilege/internet\n"); + ret = privilege_info_is_privacy2("User::Pkg::org.test.privacy", "http://tizen.org/privilege/internet"); + if (ret == 0) { + success_cnt++; + printf("SUCCESS: http://tizen.org/privilege/internet is NOT PRIVACY and pkg is NOT PRELOADED\n"); + } else { + fail_cnt++; + printf("Test FAILED. ret = %d\n", ret); + } + __print_line(); + + + printf("NULL + NOT LOCATION PRIVACY -> ASK (privacy)\n"); + printf("pkgid: NULL\n"); + printf("privilege : http://tizen.org/privilege/account.read\n"); + ret = privilege_info_is_privacy2(NULL, "http://tizen.org/privilege/account.read"); + if (ret == 1) { + success_cnt++; + printf("SUCCESS: http://tizen.org/privilege/account.read is PRIVACY but NOT LOCATION and pkg is NOT PRELOADED\n"); + } else { + fail_cnt++; + printf("Test FAILED. ret = %d\n", ret); + } + __print_line(); + + + printf("NULL + NOT PRIVACY -> ALLOW (not privacy)\n"); + printf("pkgid: NULL\n"); + printf("privilege : http://tizen.org/privilege/internet\n"); + ret = privilege_info_is_privacy2(NULL, "http://tizen.org/privilege/internet"); + if (ret == 0) { + success_cnt++; + printf("SUCCESS: http://tizen.org/privilege/internet is NOT PRIVACY and pkg is NOT PRELOADED\n"); + } else { + fail_cnt++; + printf("Test FAILED. ret = %d\n", ret); + } + __print_line(); + +#endif +} + int main() { __tcinfo(function, "privilege_info_is_privacy"); @@ -506,7 +626,7 @@ int main() __test_privilege_info_get_privilege_description(); __tcinfo(function, "privilege_info_get_privilege_group_display_name"); - __test__privilege_info_get_privilege_group_display_name(); + __test_privilege_info_get_privilege_group_display_name(); __tcinfo(function, "privilege_info_get_privacy_list"); __test_privilege_info_get_privacy_list(); @@ -520,6 +640,9 @@ int main() __tcinfo(function, "privilege_info_get_privacy_display"); __test_privilege_info_get_privacy_display(); + __tcinfo(function, "privilege_info_is_privacy2"); + __test_privilege_info_is_privacy2(); + __color_to_green(); printf("Test Complete\n"); printf("success : %d, ", success_cnt);