Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Startup Init Lite
提交
b8112696
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看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
b8112696
编写于
6月 21, 2022
作者:
O
openharmony_ci
提交者:
Gitee
6月 21, 2022
浏览文件
操作
浏览文件
下载
差异文件
!814 修复解码uid和gid未做区分的问题
Merge pull request !814 from Mupceet/0621xyt
上级
9fc9e7cb
7bb94403
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
19 addition
and
7 deletion
+19
-7
services/include/init_utils.h
services/include/init_utils.h
+2
-0
services/init/init_common_cmds.c
services/init/init_common_cmds.c
+1
-1
services/init/init_service_manager.c
services/init/init_service_manager.c
+2
-2
services/utils/init_utils.c
services/utils/init_utils.c
+12
-2
ueventd/ueventd_read_cfg.c
ueventd/ueventd_read_cfg.c
+2
-2
未找到文件。
services/include/init_utils.h
浏览文件 @
b8112696
...
...
@@ -18,6 +18,7 @@
#include <fcntl.h>
#include <sys/stat.h>
#include <stdint.h>
#include <stdbool.h>
#include <unistd.h>
#ifdef __cplusplus
...
...
@@ -49,6 +50,7 @@ typedef struct {
#define BOOT_CMD_LINE STARTUP_INIT_UT_PATH"/proc/cmdline"
uid_t
DecodeUid
(
const
char
*
name
);
gid_t
DecodeGid
(
const
char
*
name
);
char
*
ReadFileToBuf
(
const
char
*
configFile
);
int
GetProcCmdlineValue
(
const
char
*
name
,
const
char
*
buffer
,
char
*
value
,
int
length
);
char
*
ReadFileData
(
const
char
*
fileName
);
...
...
services/init/init_common_cmds.c
浏览文件 @
b8112696
...
...
@@ -291,7 +291,7 @@ static int SetOwner(const char *file, const char *ownerStr, const char *groupStr
uid_t
owner
=
DecodeUid
(
ownerStr
);
INIT_ERROR_CHECK
(
owner
!=
(
uid_t
)
-
1
,
return
-
1
,
"SetOwner invalid uid :%s."
,
ownerStr
);
gid_t
group
=
Decode
U
id
(
groupStr
);
gid_t
group
=
Decode
G
id
(
groupStr
);
INIT_ERROR_CHECK
(
group
!=
(
gid_t
)
-
1
,
return
-
1
,
"SetOwner invalid gid :%s."
,
groupStr
);
return
(
chown
(
file
,
owner
,
group
)
!=
0
)
?
-
1
:
0
;
}
...
...
services/init/init_service_manager.c
浏览文件 @
b8112696
...
...
@@ -494,7 +494,7 @@ static int AddServiceSocket(cJSON *json, Service *service)
stringValue
=
GetStringValue
(
json
,
"gid"
,
&
strLen
);
INIT_ERROR_CHECK
((
stringValue
!=
NULL
)
&&
(
strLen
>
0
),
free
(
sockopt
);
sockopt
=
NULL
;
return
SERVICE_FAILURE
,
"Failed to get string for gid"
);
sockopt
->
gid
=
Decode
U
id
(
stringValue
);
sockopt
->
gid
=
Decode
G
id
(
stringValue
);
INIT_ERROR_CHECK
((
sockopt
->
uid
!=
(
uid_t
)
-
1
)
&&
(
sockopt
->
gid
!=
(
uid_t
)
-
1
),
free
(
sockopt
);
sockopt
=
NULL
;
return
SERVICE_FAILURE
,
"Invalid uid or gid"
);
ret
=
ParseSocketOption
(
json
,
sockopt
);
...
...
@@ -566,7 +566,7 @@ static int AddServiceFile(cJSON *json, Service *service)
}
fileOpt
->
perm
=
strtoul
(
opt
[
SERVICE_FILE_PERM
],
0
,
OCTAL_BASE
);
fileOpt
->
uid
=
DecodeUid
(
opt
[
SERVICE_FILE_UID
]);
fileOpt
->
gid
=
Decode
U
id
(
opt
[
SERVICE_FILE_GID
]);
fileOpt
->
gid
=
Decode
G
id
(
opt
[
SERVICE_FILE_GID
]);
if
(
fileOpt
->
uid
==
(
uid_t
)
-
1
||
fileOpt
->
gid
==
(
gid_t
)
-
1
)
{
free
(
fileOpt
);
fileOpt
=
NULL
;
...
...
services/utils/init_utils.c
浏览文件 @
b8112696
...
...
@@ -48,7 +48,7 @@ float ConvertMicrosecondToSecond(int x)
return
((
x
/
THOUSAND_UNIT_INT
)
/
THOUSAND_UNIT_FLOAT
);
}
uid_t
DecodeUid
(
const
char
*
name
)
static
uid_t
DecodeId
(
const
char
*
name
,
bool
isUid
)
{
#ifndef __LITEOS_M__
INIT_CHECK_RETURN_VALUE
(
name
!=
NULL
,
-
1
);
...
...
@@ -70,13 +70,23 @@ uid_t DecodeUid(const char *name)
if
(
userInf
==
NULL
)
{
return
-
1
;
}
return
userInf
->
pw_u
id
;
return
isUid
?
userInf
->
pw_uid
:
userInf
->
pw_g
id
;
}
#else
return
-
1
;
#endif
}
uid_t
DecodeUid
(
const
char
*
name
)
{
return
DecodeId
(
name
,
true
);
}
gid_t
DecodeGid
(
const
char
*
name
)
{
return
DecodeId
(
name
,
false
);
}
char
*
ReadFileToBuf
(
const
char
*
configFile
)
{
char
*
buffer
=
NULL
;
...
...
ueventd/ueventd_read_cfg.c
浏览文件 @
b8112696
...
...
@@ -102,7 +102,7 @@ static int ParseDeviceConfig(char *p)
INIT_ERROR_CHECK
(
errno
==
0
,
config
->
mode
=
DEVMODE
,
"Invalid mode in config file for device node %s. use default mode"
,
config
->
name
);
config
->
uid
=
(
uid_t
)
DecodeUid
(
items
[
DEVICE_CONFIG_UID_NUM
]);
config
->
gid
=
(
gid_t
)
Decode
U
id
(
items
[
DEVICE_CONFIG_GID_NUM
]);
config
->
gid
=
(
gid_t
)
Decode
G
id
(
items
[
DEVICE_CONFIG_GID_NUM
]);
if
(
count
==
expectedCount
)
{
config
->
parameter
=
strdup
(
items
[
DEVICE_CONFIG_PARAM_NUM
]);
// device parameter
}
else
{
...
...
@@ -142,7 +142,7 @@ static int ParseSysfsConfig(char *p)
INIT_ERROR_CHECK
(
errno
==
0
,
config
->
mode
=
DEVMODE
,
"Invalid mode in config file for sys path %s. use default mode"
,
config
->
sysPath
);
config
->
uid
=
(
uid_t
)
DecodeUid
(
items
[
SYS_CONFIG_UID_NUM
]);
config
->
gid
=
(
gid_t
)
Decode
U
id
(
items
[
SYS_CONFIG_GID_NUM
]);
config
->
gid
=
(
gid_t
)
Decode
G
id
(
items
[
SYS_CONFIG_GID_NUM
]);
ListAddTail
(
&
g_sysDevices
,
&
config
->
list
);
FreeStringVector
(
items
,
count
);
return
0
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录