Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
soremi
oceanbase
提交
38d90c34
O
oceanbase
项目概览
soremi
/
oceanbase
与 Fork 源项目一致
Fork自
oceanbase / oceanbase
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
O
oceanbase
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
38d90c34
编写于
11月 02, 2022
作者:
O
obdev
提交者:
wangzelin.wzl
11月 02, 2022
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fix missed judgment of sanity_check_range
上级
50776617
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
13 addition
and
10 deletion
+13
-10
deps/oblib/src/lib/alloc/memory_sanity.cpp
deps/oblib/src/lib/alloc/memory_sanity.cpp
+7
-4
deps/oblib/src/lib/alloc/memory_sanity.h
deps/oblib/src/lib/alloc/memory_sanity.h
+6
-6
未找到文件。
deps/oblib/src/lib/alloc/memory_sanity.cpp
浏览文件 @
38d90c34
...
...
@@ -49,13 +49,16 @@ void sanity_set_whitelist(const char *str)
void
memory_sanity_abort
()
{
if
(
'\0'
==
whitelist
[
0
])
{
abort
();
}
void
*
addrs
[
128
];
int
n_addr
=
backtrace
(
addrs
,
sizeof
(
addrs
)
/
sizeof
(
addrs
[
0
]));
void
*
vip_addr
=
NULL
;
for
(
int
i
=
0
;
NULL
==
vip_addr
&&
i
<
n_addr
;
i
++
)
{
for
(
int
j
=
0
;
NULL
==
vip_addr
&&
j
<
8
;
j
++
)
{
for
(
int
j
=
0
;
NULL
==
vip_addr
&&
j
<
sizeof
(
vips
)
/
sizeof
(
vips
[
0
])
;
j
++
)
{
t_vip
*
vip
=
&
vips
[
j
];
if
(
0
==
strlen
(
vip
->
func_
)
)
{
if
(
'\0'
==
vip
->
func_
[
0
]
)
{
break
;
}
else
if
(
0
==
vip
->
min_addr_
||
0
==
vip
->
max_addr_
)
{
continue
;
...
...
@@ -81,9 +84,9 @@ void memory_sanity_abort()
if
(
real_len
<
buf_len
-
pos
)
{
pos
+=
real_len
;
}
for
(
int
i
=
0
;
i
<
8
;
i
++
)
{
for
(
int
i
=
0
;
i
<
sizeof
(
vips
)
/
sizeof
(
vips
[
0
])
;
i
++
)
{
t_vip
*
vip
=
&
vips
[
i
];
if
(
0
==
strlen
(
vip
->
func_
)
)
{
if
(
'\0'
==
vip
->
func_
[
0
]
)
{
break
;
}
else
if
(
strstr
(
func_name
,
vip
->
func_
)
!=
NULL
)
{
strncpy
(
vip_func
,
func_name
,
sizeof
(
vip_func
));
...
...
deps/oblib/src/lib/alloc/memory_sanity.h
浏览文件 @
38d90c34
...
...
@@ -72,7 +72,7 @@ static constexpr int64_t sanity_max_canonical_addr = 0x4f210376cf1c;
static
inline
bool
sanity_addr_in_range
(
const
void
*
ptr
)
{
return
(
int64_t
)
ptr
>=
sanity_min_canonical_addr
&&
(
int64_t
)
ptr
<
sanity_max
_canonical_addr
;
return
(
int64_t
)
ptr
<
sanity_max_canonical_addr
&&
(
int64_t
)
ptr
>=
sanity_min
_canonical_addr
;
}
static
inline
void
*
sanity_to_shadow
(
const
void
*
ptr
)
...
...
@@ -139,12 +139,12 @@ static inline void sanity_check_range(const void *ptr, ssize_t len)
char
*
start_align
=
(
char
*
)
sanity_align_up
((
uint64_t
)
start
,
8
);
char
*
end_align
=
(
char
*
)
sanity_align_down
((
uint64_t
)
end
,
8
);
if
(
start_align
>
start
&&
(
*
(
u
int8_t
*
)
sanity_to_shadow
(
start_align
-
8
)
!=
0x0
&&
*
(
u
int8_t
*
)
sanity_to_shadow
(
start_align
-
8
)
<
(
len
+
start
-
(
start_align
-
8
))))
{
(
*
(
int8_t
*
)
sanity_to_shadow
(
start_align
-
8
)
!=
0x0
&&
*
(
int8_t
*
)
sanity_to_shadow
(
start_align
-
8
)
<
(
len
+
start
-
(
start_align
-
8
))))
{
memory_sanity_abort
();
}
if
(
end_align
>=
start_align
+
8
)
{
if
(
*
(
u
int8_t
*
)
sanity_to_shadow
(
start_align
)
!=
0x0
)
{
if
(
*
(
int8_t
*
)
sanity_to_shadow
(
start_align
)
!=
0x0
)
{
memory_sanity_abort
();
}
if
(
end_align
>
start_align
+
8
)
{
...
...
@@ -157,8 +157,8 @@ static inline void sanity_check_range(const void *ptr, ssize_t len)
}
}
if
(
end_align
<
end
&&
(
*
(
u
int8_t
*
)
sanity_to_shadow
(
end_align
)
!=
0x0
&&
*
(
u
int8_t
*
)
sanity_to_shadow
(
end_align
)
<
(
end
-
end_align
)))
{
(
*
(
int8_t
*
)
sanity_to_shadow
(
end_align
)
!=
0x0
&&
*
(
int8_t
*
)
sanity_to_shadow
(
end_align
)
<
(
end
-
end_align
)))
{
memory_sanity_abort
();
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录