Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Third Party Musl
提交
6c3907e8
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看板
体验新版 GitCode,发现更多精彩内容 >>
提交
6c3907e8
编写于
7月 06, 2022
作者:
W
wangjiahui
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix dlsym issue
Signed-off-by:
N
wangjiahui
<
wangjiahui27@huawei.com
>
上级
771aa749
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
61 addition
and
8 deletion
+61
-8
libc-test/src/functionalext/ldso_randomization/ldso_randomization_test.c
...unctionalext/ldso_randomization/ldso_randomization_test.c
+52
-3
porting/linux/user/ldso/dynlink.c
porting/linux/user/ldso/dynlink.c
+9
-5
未找到文件。
libc-test/src/functionalext/ldso_randomization/ldso_randomization_test.c
浏览文件 @
6c3907e8
...
...
@@ -496,13 +496,58 @@ static void dlopen_ns_randomization_0600(void)
/**
* @tc.name : dlsym_randomization_0300
* @tc.desc : Call the dlsym interface to get symbol address
* @tc.desc : Call the dlsym interface to get symbol address
, handle is invalid
* @tc.level : Level2
*/
static
void
dlsym_randomization_0300
(
void
)
{
void
*
sym
=
dlsym
(
NULL
,
"test"
);
EXPECT_FALSE
(
__FUNCTION__
,
sym
);
void
*
sym
=
dlsym
((
void
*
)
0xFFFF
,
"invalid_function"
);
EXPECT_PTREQ
(
__FUNCTION__
,
sym
,
NULL
);
}
/**
* @tc.name : dlsym_randomization_0400
* @tc.desc : Call the dlsym interface to get symbol address, handle is setted to RTLD_DEFAULT, and name is valid
* @tc.level : Level1
*/
static
void
dlsym_randomization_0400
(
void
)
{
void
*
sym
=
dlsym
(
RTLD_DEFAULT
,
"fopen"
);
EXPECT_PTRNE
(
__FUNCTION__
,
sym
,
NULL
);
}
/**
* @tc.name : dlsym_randomization_0500
* @tc.desc : Call the dlsym interface to get symbol address, handle is setted to RTLD_DEFAULT, and name is invalid
* @tc.level : Level2
*/
static
void
dlsym_randomization_0500
(
void
)
{
void
*
sym
=
dlsym
(
RTLD_DEFAULT
,
"invalid_func"
);
EXPECT_PTREQ
(
__FUNCTION__
,
sym
,
NULL
);
}
/**
* @tc.name : dlsym_randomization_0600
* @tc.desc : Call the dlsym interface to get symbol address, handle is setted to RTLD_NEXT, and name is valid
* @tc.level : Level1
*/
static
void
dlsym_randomization_0600
(
void
)
{
void
*
sym
=
dlsym
(
RTLD_NEXT
,
"fopen"
);
EXPECT_PTRNE
(
__FUNCTION__
,
sym
,
NULL
);
}
/**
* @tc.name : dlsym_randomization_0700
* @tc.desc : Call the dlsym interface to get symbol address, handle is setted to RTLD_NEXT, and name is invalid
* @tc.level : Level2
*/
static
void
dlsym_randomization_0700
(
void
)
{
void
*
sym
=
dlsym
(
RTLD_NEXT
,
"invalid_func"
);
EXPECT_PTREQ
(
__FUNCTION__
,
sym
,
NULL
);
}
/**
...
...
@@ -536,6 +581,10 @@ TEST_FUNC test_cases[] = {
dlopen_ns_randomization_0400
,
dlopen_ns_randomization_0600
,
dlsym_randomization_0300
,
dlsym_randomization_0400
,
dlsym_randomization_0500
,
dlsym_randomization_0600
,
dlsym_randomization_0700
,
dlclose_randomization_0100
,
};
...
...
porting/linux/user/ldso/dynlink.c
浏览文件 @
6c3907e8
...
...
@@ -2920,12 +2920,16 @@ hidden void *__dlsym(void *restrict p, const char *restrict s, void *restrict ra
void
*
res
;
pthread_rwlock_rdlock
(
&
lock
);
#ifdef HANDLE_RANDOMIZATION
struct
dso
*
dso
=
find_dso_by_handle
(
p
);
if
(
dso
==
NULL
)
{
pthread_rwlock_unlock
(
&
lock
);
return
0
;
if
((
p
!=
RTLD_DEFAULT
)
&&
(
p
!=
RTLD_NEXT
))
{
struct
dso
*
dso
=
find_dso_by_handle
(
p
);
if
(
dso
==
NULL
)
{
pthread_rwlock_unlock
(
&
lock
);
return
0
;
}
res
=
do_dlsym
(
dso
,
s
,
ra
);
}
else
{
res
=
do_dlsym
(
p
,
s
,
ra
);
}
res
=
do_dlsym
(
dso
,
s
,
ra
);
#else
res
=
do_dlsym
(
p
,
s
,
ra
);
#endif
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录