Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Kernel Liteos A
提交
80e24fa9
K
Kernel Liteos A
项目概览
OpenHarmony
/
Kernel Liteos A
1 年多 前同步成功
通知
460
Star
414
Fork
55
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
4
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
K
Kernel Liteos A
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
4
Issue
4
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
80e24fa9
编写于
9月 09, 2021
作者:
O
openharmony_ci
提交者:
Gitee
9月 09, 2021
浏览文件
操作
浏览文件
下载
差异文件
!618 回退错误合入的解决getgroups的list比设置的list多一个gid问题的修改
Merge pull request !618 from wanghao-free/OpenHarmony_1.0.1_release
上级
2a0db420
15bded54
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
14 addition
and
8 deletion
+14
-8
syscall/process_syscall.c
syscall/process_syscall.c
+14
-8
未找到文件。
syscall/process_syscall.c
浏览文件 @
80e24fa9
...
...
@@ -683,12 +683,12 @@ int SysGetGroupID(void)
}
#ifdef LOSCFG_SECURITY_CAPABILITY
static
int
SetGroups
(
int
size
,
const
int
*
safeList
)
static
int
SetGroups
(
int
listSize
,
const
int
*
safeList
,
int
size
)
{
User
*
oldUser
=
NULL
;
unsigned
int
intSave
;
User
*
newUser
=
LOS_MemAlloc
(
m_aucSysMem1
,
sizeof
(
User
)
+
s
ize
*
sizeof
(
int
));
User
*
newUser
=
LOS_MemAlloc
(
m_aucSysMem1
,
sizeof
(
User
)
+
listS
ize
*
sizeof
(
int
));
if
(
newUser
==
NULL
)
{
return
-
ENOMEM
;
}
...
...
@@ -696,11 +696,14 @@ static int SetGroups(int size, const int *safeList)
SCHEDULER_LOCK
(
intSave
);
oldUser
=
OsCurrUserGet
();
(
VOID
)
memcpy_s
(
newUser
,
sizeof
(
User
),
oldUser
,
sizeof
(
User
));
if
(
s
ize
!=
0
)
{
if
(
s
afeList
!=
NULL
)
{
(
VOID
)
memcpy_s
(
newUser
->
groups
,
size
*
sizeof
(
int
),
safeList
,
size
*
sizeof
(
int
));
}
newUser
->
groupNumber
=
size
;
if
(
listSize
==
size
)
{
newUser
->
groups
[
listSize
]
=
oldUser
->
gid
;
}
newUser
->
groupNumber
=
listSize
+
1
;
OsCurrProcessGet
()
->
user
=
newUser
;
SCHEDULER_UNLOCK
(
intSave
);
...
...
@@ -721,7 +724,7 @@ static int GetGroups(int size, int list[])
SCHEDULER_UNLOCK
(
intSave
);
listSize
=
groupCount
*
sizeof
(
int
);
if
(
(
size
==
0
)
||
(
groupCount
==
0
)
)
{
if
(
size
==
0
)
{
return
groupCount
;
}
else
if
(
list
==
NULL
)
{
return
-
EFAULT
;
...
...
@@ -779,6 +782,7 @@ int SysSetGroups(int size, const int list[])
#ifdef LOSCFG_SECURITY_CAPABILITY
int
ret
;
int
gid
;
int
listSize
=
size
;
unsigned
int
count
;
int
*
safeList
=
NULL
;
#endif
...
...
@@ -809,14 +813,16 @@ int SysSetGroups(int size, const int list[])
}
gid
=
OsCurrUserGet
()
->
gid
;
for
(
count
=
0
;
count
<
size
;
count
++
)
{
if
(
safeList
[
count
]
<
0
)
{
if
(
safeList
[
count
]
==
gid
)
{
listSize
=
size
-
1
;
}
else
if
(
safeList
[
count
]
<
0
)
{
ret
=
-
EINVAL
;
goto
EXIT
;
}
}
}
ret
=
SetGroups
(
size
,
safeList
);
ret
=
SetGroups
(
listSize
,
safeList
,
size
);
EXIT:
if
(
safeList
!=
NULL
)
{
(
void
)
LOS_MemFree
(
m_aucSysMem1
,
safeList
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录