feat(svc_power): 读级命令鉴权放宽到任意调用者 (agent-189, 用户定案) — STATUS/BATTERY/REBOOT_REASON/UPGRADE_STATUS/dac status 读级不再查 uid;动作级维持 os.meow.*/系统身份;authtest +16 断言 ALL PASS。svc_power e0494eb7→c6ddf3f8
This commit is contained in:
1 parent
c8ffdfbad9
commit
555c4a458e
5 files changed
+53
-7
No files matched your search
@@ -1,7 +1,8 @@
|
||||
/* svc_power_authtest.c — meow_svc_power II 期 IPC 鉴权逻辑 宿主自测(本程序非生产代码)。
|
||||
*
|
||||
* 通过 #include 生产源文件(meow_svc_power.c,用 #define main 改名避免入口冲突),在同一 TU 内直接
|
||||
* 访问其 FILE-STATIC 函数 classify_exe / is_system_action / is_sys_identity,验证鉴别/分级策略的决策表。
|
||||
* 访问其 FILE-STATIC 函数 classify_exe / is_system_action / is_sys_identity / is_read_level,
|
||||
* 验证鉴别/分级策略的决策表。
|
||||
* 覆盖「真机需特权路径 /proc/pid/exe 判定」之外的所有纯逻辑分支;真实 pid→exe 解析留真机验证。
|
||||
*
|
||||
* 用途:dev docs 复现级宿主自测;不进入固件/不部署。用法:
|
||||
@@ -87,6 +88,31 @@ int main(void)
|
||||
CHECK(is_system_action(POWER_SCREEN) == 0);
|
||||
CHECK(is_system_action(POWER_DAC) == 0);
|
||||
|
||||
printf("== is_read_level ==\n");
|
||||
m_power_action_t a;
|
||||
memset(&a, 0, sizeof a);
|
||||
|
||||
/* 读级(只读无副作用)→ 1:放宽到任意调用者 */
|
||||
a.cmd = POWER_STATUS; CHECK(is_read_level(&a) == 1);
|
||||
a.cmd = POWER_BATTERY; CHECK(is_read_level(&a) == 1);
|
||||
a.cmd = POWER_REBOOT_REASON; CHECK(is_read_level(&a) == 1);
|
||||
a.cmd = POWER_UPGRADE_STATUS; CHECK(is_read_level(&a) == 1);
|
||||
|
||||
/* DAC status(flag=2) 为读级;on/off(flag=0/1) 为动作级 */
|
||||
a.cmd = POWER_DAC; a.flag = 2; CHECK(is_read_level(&a) == 1); /* dac status */
|
||||
a.cmd = POWER_DAC; a.flag = 0; CHECK(is_read_level(&a) == 0); /* dac off */
|
||||
a.cmd = POWER_DAC; a.flag = 1; CHECK(is_read_level(&a) == 0); /* dac on */
|
||||
|
||||
/* 动作级(有副作用/系统级)→ 0:走现有鉴权 */
|
||||
a.cmd = POWER_SCREEN; a.flag = 0; CHECK(is_read_level(&a) == 0); /* screen off/on */
|
||||
a.cmd = POWER_SCREEN; a.flag = 2; CHECK(is_read_level(&a) == 0); /* screen timeout 写 settings */
|
||||
a.cmd = POWER_SHUTDOWN; CHECK(is_read_level(&a) == 0);
|
||||
a.cmd = POWER_REBOOT; CHECK(is_read_level(&a) == 0);
|
||||
a.cmd = POWER_UPGRADE; CHECK(is_read_level(&a) == 0);
|
||||
a.cmd = POWER_BACK_HIBY; CHECK(is_read_level(&a) == 0);
|
||||
a.cmd = POWER_SET_DEFAULT_MEOW; CHECK(is_read_level(&a) == 0);
|
||||
a.cmd = POWER_SET_DEFAULT_HIBY; CHECK(is_read_level(&a) == 0);
|
||||
|
||||
if (g_fail) { printf("\nAUTH TEST: %d FAIL\n", g_fail); return 1; }
|
||||
printf("\nAUTH TEST: ALL PASS\n");
|
||||
return 0;
|
||||
|
||||
Reference in new issue
Block a user