Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Startup Init Lite
提交
d2de1bec
S
Startup Init Lite
项目概览
OpenHarmony
/
Startup Init Lite
1 年多 前同步成功
通知
3
Star
37
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
S
Startup Init Lite
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
未验证
提交
d2de1bec
编写于
6月 01, 2022
作者:
O
openharmony_ci
提交者:
Gitee
6月 01, 2022
浏览文件
操作
浏览文件
下载
差异文件
!742 fix capability挑单release
Merge pull request !742 from Mupceet/0531xytrelease
上级
0a74325b
4b155aa1
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
12 addition
and
8 deletion
+12
-8
services/init/init_capability.c
services/init/init_capability.c
+12
-8
未找到文件。
services/init/init_capability.c
浏览文件 @
d2de1bec
...
...
@@ -73,12 +73,15 @@ static unsigned int GetCapByString(const char *capStr)
{
"AUDIT_READ"
,
CAP_AUDIT_READ
},
};
int
mapSize
=
(
int
)
ARRAY_LENGTH
(
capStrCapNum
);
int
capLen
=
strlen
(
"CAP_"
);
for
(
int
j
=
0
;
j
<
mapSize
;
j
++
)
{
if
(
strcmp
(
capStr
,
capStrCapNum
[
j
].
capStr
)
==
0
)
{
if
((
strcmp
(
capStr
,
capStrCapNum
[
j
].
capStr
)
==
0
)
||
((
strncmp
(
capStr
,
"CAP_"
,
capLen
)
==
0
)
&&
(
strcmp
(
capStr
+
capLen
,
capStrCapNum
[
j
].
capStr
)
==
0
)))
{
return
capStrCapNum
[
j
].
CapNum
;
}
}
return
-
1
;
return
CAP_LAST_CAP
+
1
;
}
int
GetServiceCaps
(
const
cJSON
*
curArrItem
,
Service
*
service
)
...
...
@@ -97,26 +100,27 @@ int GetServiceCaps(const cJSON *curArrItem, Service *service)
service
->
servPerm
.
caps
=
(
unsigned
int
*
)
calloc
(
1
,
sizeof
(
unsigned
int
)
*
capsCnt
);
INIT_ERROR_CHECK
(
service
->
servPerm
.
caps
!=
NULL
,
return
SERVICE_FAILURE
,
"Failed to malloc for service %s"
,
service
->
name
);
service
->
servPerm
.
capsCnt
=
capsCnt
;
service
->
servPerm
.
capsCnt
=
0
;
unsigned
int
caps
=
FULL_CAP
;
for
(
int
i
=
0
;
i
<
capsCnt
;
++
i
)
{
// number form
char
*
capStr
=
NULL
;
cJSON
*
capJson
=
cJSON_GetArrayItem
(
filedJ
,
i
);
if
(
cJSON_IsNumber
(
capJson
))
{
// for number
caps
=
(
unsigned
int
)
cJSON_GetNumberValue
(
capJson
);
}
else
if
(
cJSON_IsString
(
capJson
))
{
c
har
*
c
apStr
=
cJSON_GetStringValue
(
capJson
);
capStr
=
cJSON_GetStringValue
(
capJson
);
if
(
capStr
==
NULL
||
strlen
(
capStr
)
<=
0
)
{
// check all errors
INIT_LOGE
(
"service=%s, parse item[%d] as string, error."
,
service
->
name
,
i
);
break
;
}
caps
=
GetCapByString
(
capStr
);
}
INIT_CHECK_RETURN_VALUE
(
caps
>=
0
,
SERVICE_FAILURE
);
if
((
caps
>
CAP_LAST_CAP
)
&&
(
caps
!=
(
unsigned
int
)
FULL_CAP
))
{
INIT_LOGE
(
"service=%s
, caps = %d, error."
,
service
->
name
,
caps
);
return
SERVICE_FAILURE
;
INIT_LOGE
(
"service=%s
not support caps = %s caps %d"
,
service
->
name
,
capStr
,
caps
);
continue
;
}
service
->
servPerm
.
caps
[
i
]
=
(
unsigned
int
)
caps
;
service
->
servPerm
.
caps
[
service
->
servPerm
.
capsCnt
]
=
(
unsigned
int
)
caps
;
service
->
servPerm
.
capsCnt
++
;
}
return
0
;
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录