From e6357cf30d01e13d125d8a37225611e027b04c80 Mon Sep 17 00:00:00 2001 From: Chunling Ye Date: Tue, 21 Jul 2020 13:10:22 +0800 Subject: [PATCH] [Service] Check privilege of systeminfo device api 1. change apply to call function for undefined 1 error 2. add privilege check for others api: getPropertyValueArray/ addPropertyValueChangeListener/addPropertyValueArrayChangeListener. Change-Id: Ic136c5a9307cfac218f219060b7fdf55a237c568 Signed-off-by: Chunling Ye --- wrt_app/service/access_control_manager.ts | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/wrt_app/service/access_control_manager.ts b/wrt_app/service/access_control_manager.ts index 6a55946..4517cbe 100644 --- a/wrt_app/service/access_control_manager.ts +++ b/wrt_app/service/access_control_manager.ts @@ -1,5 +1,16 @@ import * as vm from 'vm'; +function checkSystemInfoApiPrivilege(func: any, permissions: string[]) { + let override_func = func; + return (type: string, onSuccess: any, onError: any) => { + if (type === "CELLULAR_NETWORK" && !permissions.includes("http://tizen.org/privilege/telephony")) { + console.log('The telephony permission is missing.'); + return ; + } + override_func.call(global.tizen.systeminfo, type, onSuccess, onError); + } +} + export function initialize(permissions: string[], sandbox: vm.Context) { let tizen = sandbox.tizen; if (!permissions.includes("http://tizen.org/privilege/alarm")) { @@ -106,12 +117,13 @@ export function initialize(permissions: string[], sandbox: vm.Context) { } } // systeminfo : Runtime privilege validation is required, based on parameters - let getPropertyValue = tizen.systeminfo.getPropertyValue; - tizen.systeminfo.getPropertyValue = (type: string, onSuccessCallback: any, onErrorCallback: any) => { - if (type === "CELLULAR_NETWORK" && !permissions.includes("http://tizen.org/privilege/telephony")) { - console.log('The telephony permission is missing.'); - return; - } - getPropertyValue.apply(tizen.systeminfo, arguments); - }; + tizen.systeminfo.getPropertyValue = + checkSystemInfoApiPrivilege(tizen.systeminfo.getPropertyValue, permissions); + tizen.systeminfo.getPropertyValueArray = + checkSystemInfoApiPrivilege(tizen.systeminfo.getPropertyValueArray, permissions); + tizen.systeminfo.addPropertyValueChangeListener = + checkSystemInfoApiPrivilege(tizen.systeminfo.addPropertyValueChangeListener, permissions); + tizen.systeminfo.addPropertyValueArrayChangeListener = + checkSystemInfoApiPrivilege(tizen.systeminfo.addPropertyValueArrayChangeListener, permissions); + } -- 2.7.4