问题标签 [sanitizer]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 使用 sanitize=vptr 时对“__dynamic_cast”的未定义引用
我建立vfptr.cpp
一个fsanitize=vptr
文件static
。它有关于“未定义的 __dynamic_cast 引用”的错误消息。g++7.4.0 和 g++11.0.0 都有问题。使用 sanitizer=vptr 是否合理?
vptr.cpp
编译选项
错误信息:
c++ - C++ 类型索引散列导致未定义的行为
按照https://en.cppreference.com/w/cpp/types/type_index上的示例进行编译,会-fsanitize=address,integer,undefined
发现未定义的行为。代码是:
在编译并运行后产生:
正如所见,clang 抱怨用户定义类型的未定义行为。有人知道不会导致未定义行为的正确实现是什么样的吗?
clang - Clang++ LSAN 和 UBSAN 导致对 `__ubsan_handle_add_overflow' 的未定义引用
当我在使用编译器清理程序时,当仅在clang++
.
请注意,当我删除-fsanitize=leak
或添加这些标志时,链接问题消失了:-fsanitize=leak -fsanitize-trap=undefined
.
另请注意,这种奇怪的链接错误似乎只在使用clang++
. g++
在下面显示的所有情况下都工作得很好。
任何线索都可能有所帮助。谢谢。
main.cpp
如果您需要(您可能永远不会这样做)的源代码:
security - 了解由未定义行为清理程序 (UBSan) 触发的运行时错误
启用未定义的消毒剂时,我在 GNU 科学库 (GSL) 中发现运行时错误:
但我不知道如何导致这些错误,或者如何修复它们。有人可以帮忙解释一下吗?此外,是否应该向开发人员提出一个重要的问题(例如,这种蜜蜂是否可以被用作安全攻击)?
源代码“deque.c”可以在这里找到,运行时错误的相关行如下所示(错误出现在第58、59、60、61行)。
deque 的定义在这里,在同一个文件中:
[添加]代码调用如下,在GSL 的 movstat 库中:deque_init
mmacc.c
上面代码中的函数引用了GSL的movstat库中ringbuf_size
的以下代码。ringbuf.c
gcc - 如何在使用 g++ 编译时修复“ld: library not found for -lubsan”?
当我尝试使用标志编译我的eek.cpp
文件时,它显示:g++ eek.cpp -o eek -fsanitize=undefined
但g++ eek.cpp -o eek
工作正常。
我的终端截图在这里。
我在 macOS Big Sur 上使用 zsh 和 gcc 10.2.0。fsanitize=undefined
在我从 Catalina 更新我的 macOS 之前,昨天还在工作。
该ubsan.h
文件确实存在于 中/usr/local/Cellar/gcc/10.2.0_2/lib/gcc/10/gcc/x86_64-apple-darwin20/10.2.0/plugin/include
,但它不起作用。我也读过这篇文章,但它并没有解决我的问题。我应该如何解决它?
arm64 - llvm/ompiler-rt sanitizer 不支持 aarch64 ilp32:asan_interceptors_vfork.S 与 aarch64 ilp32 不兼容
我正在从编译器-rt(https://github.com/llvm/llvm-project )构建 libasan.so,在使用https://patches.linaro.org/patch/129368/修补源之后,所有 cpp 都可以正确构建。但是我被 ASM (asan/asan_interceptors_vfork.S) 阻止了,在 aarch64 中,这指的是https://github.com/llvm/llvm-project/blob/main/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors_vfork_aarch64.inc。年代。
错误信息:
我猜背后的原因是 asan_interceptors_vfork.S 是默认的 ILP64 格式?
ps:我在构建 asan_interceptors_vfork.So 时确实有 -fPIC
c++ - 禁止特定的消毒剂检查,但在所有其他程序上仍然失败
我想抑制第三方库中的一个错误,但在任何其他失败的检查中仍然让程序退出 1。在我看来,无论文件的内容如何,-fno-sanitize-recover
都会退出程序。另一方面,指定的错误被正确抑制,另一个错误仍然打印,但程序正常退出,这是我不想要的suppressions
。-fsanitize-recover
我怎样才能达到预期的行为?Ubsan 抑制和 -fno-sanitize-recover 真的相互排斥吗?
angular - This.sanitizer 在 NgOninit 函数(Angular,TS)之外未定义
首先,我将 DomSanitizer 导入到组件中:
之后,我创建了一个类并将其添加到构造函数中:
在 NgOnInit 函数内部,它可以正常工作,但是,在 updateURL 函数中(在 NgOnInit 外部但在类内部)它说 this.sanitizer 未定义:
我知道这是一个典型的问题,在我身上发生了很多次,但是现在我不知道如何解决它。我试图在不同的论坛中寻找未定义的问题,但我仍然无法解决它。非常感谢你
compiler-errors - 如何在 LLVM 项目中使用来自 interception.h 的 INTERCEPTOR?
我想截取一些功能并为它们添加一些功能。
我发现llvm-project中有拦截器。 https://github.com/llvm/llvm-project/blob/1a2eaebc09c6a200f93b8beb37130c8b8aab3934/compiler-rt/lib/interception/interception.h
在文档中他们说我们可以通过定义 INTERCEPTOR(return type, function name, args ...){} 并调用 INTERCEPT_FUNCTION(function name) 来拦截函数。
所以我定义了 INTERCEPTOR(void, free, void* p){ //print message} 并在 compiler-rt 文件中执行了 INTERCEPT_FUNCION(free) 。
但是我遇到了以下错误。
我认为它需要更多信息或实施。
有谁知道如何解决这个错误?
谢谢你。
sanitizer - 试图弄清楚如何在不丢失我需要的数据的情况下很好地执行 HTML sanitizer
所以我们正在尝试在工作中实现 HTML sanitizer,我正在使用下面的这个 HTML 片段进行测试。在此示例中,它截断并删除了 Jackson 和 94,但保留了其他所有内容。有没有办法清理并有意保留我想在前端显示的内容?