Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Third Party Musl
提交
f4777e40
T
Third Party Musl
项目概览
OpenHarmony
/
Third Party Musl
1 年多 前同步成功
通知
37
Star
125
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
Third Party Musl
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
未验证
提交
f4777e40
编写于
7月 27, 2022
作者:
O
openharmony_ci
提交者:
Gitee
7月 27, 2022
浏览文件
操作
浏览文件
下载
差异文件
!413 增加socket权限管控
Merge pull request !413 from maosiping/master
上级
24ed5644
c2dd0aa2
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
56 addition
and
1 deletion
+56
-1
musl_template.gni
musl_template.gni
+4
-1
src/network/lookup_name.c
src/network/lookup_name.c
+11
-0
src/network/socket.c
src/network/socket.c
+41
-0
未找到文件。
musl_template.gni
浏览文件 @
f4777e40
...
...
@@ -182,7 +182,10 @@ template("musl_libs") {
defines += [ "BROKEN_VFP_ASM" ]
}
if (is_standard_system) {
defines += [ "OHOS_DNS_PROXY_BY_NETSYS=1" ]
defines += [
"OHOS_DNS_PROXY_BY_NETSYS=1",
"OHOS_PERMISSION_INTERNET=1",
]
}
if (enable_musl_log) {
...
...
src/network/lookup_name.c
浏览文件 @
f4777e40
...
...
@@ -15,6 +15,10 @@
#include "stdio_impl.h"
#include "syscall.h"
#if OHOS_PERMISSION_INTERNET
uint8_t
is_allow_internet
(
void
);
#endif
static
int
is_valid_hostname
(
const
char
*
host
)
{
const
unsigned
char
*
s
;
...
...
@@ -168,6 +172,13 @@ static int name_from_dns(struct address buf[static MAXADDRS], char canon[static
static
int
name_from_dns_search
(
struct
address
buf
[
static
MAXADDRS
],
char
canon
[
static
256
],
const
char
*
name
,
int
family
)
{
#if OHOS_PERMISSION_INTERNET
if
(
is_allow_internet
()
==
0
)
{
errno
=
EPERM
;
return
-
1
;
}
#endif
char
search
[
256
];
struct
resolvconf
conf
;
size_t
l
,
dots
;
...
...
src/network/socket.c
浏览文件 @
f4777e40
#include <sys/socket.h>
#include <fcntl.h>
#include <errno.h>
#include <dlfcn.h>
#include <stdint.h>
#include <stddef.h>
#include "syscall.h"
#if OHOS_PERMISSION_INTERNET
typedef
uint8_t
(
*
AllowFunc
)(
void
);
static
const
char
*
LIB_NETSYS_CLIENT_NAME
=
"libnetsys_client.z.so"
;
static
const
char
*
ALLOW_SOCKET_FUNC_NAME
=
"IsAllowInternet"
;
/*
* Read a flag from netsys_client, there is only one place to set this flag, is the
* founction named DoStartup in startup_appspawn.
* */
uint8_t
is_allow_internet
(
void
)
{
static
uint8_t
first_time
=
1
;
static
uint8_t
allow
=
1
;
if
(
!
first_time
)
{
return
allow
;
}
void
*
handler
=
dlopen
(
LIB_NETSYS_CLIENT_NAME
,
RTLD_LAZY
);
if
(
handler
!=
NULL
)
{
AllowFunc
func
=
(
AllowFunc
)
dlsym
(
handler
,
ALLOW_SOCKET_FUNC_NAME
);
if
(
func
!=
NULL
&&
func
()
==
0
)
{
allow
=
0
;
}
dlclose
(
handler
);
}
first_time
=
0
;
return
allow
;
}
#endif
int
socket
(
int
domain
,
int
type
,
int
protocol
)
{
#if OHOS_PERMISSION_INTERNET
if
((
domain
==
AF_INET
||
domain
==
AF_INET6
)
&&
is_allow_internet
()
==
0
)
{
errno
=
EPERM
;
return
-
1
;
}
#endif
int
s
=
socketcall
(
socket
,
domain
,
type
,
protocol
,
0
,
0
,
0
);
if
(
s
<
0
&&
(
errno
==
EINVAL
||
errno
==
EPROTONOSUPPORT
)
&&
(
type
&
(
SOCK_CLOEXEC
|
SOCK_NONBLOCK
)))
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录