问题标签 [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.

0 投票
2 回答
1698 浏览

html - Angular Dom Sanitizer HTML 无法复制文本

我使用 DomSanitizer 从数据库中清理我的 HTML 内容以显示在页面上。

safeHtml 在哪里:

它工作完美。但是我注意到在网页上显示时无法选择或复制此文本。否则,可以正常复制或选择正常字符串字段中显示的文本。

0 投票
0 回答
66 浏览

c++ - 应该使用开启还是关闭优化的消毒剂?

我知道理想情况下应该同时进行两个构建(并且显然运行 exes),但是假设出于资源原因您只能选择一个。

我是否应该启用优化感兴趣。

我的直觉说更喜欢优化构建,因为它更有可能由于优化而使 UB 可见,但我不确定我是否正确。

0 投票
1 回答
109 浏览

c++ - clang sanitizers 错误地捕获整数溢出

说我size_type的 is uint64_t,我有以下循环( where szis of size_typetoo)

现在当用 flags 编译它时-fno-omit-frame-pointer -fsanitize=undefined -O2 -fsanitize=address,我得到一个运行时错误,它说在我here在上面的代码片段中标记的地方2147483647 + 1 cannot fit into integer,确实sz是比2^31-1. 但是,一切都应该没问题,因为可以保存值,并且应该uint64_t通过转换规则提升到. 我错过了什么?编辑:是不是总是有位?然后,-value 只是位,我们应该仍然可以。我现在在没有消毒剂的情况下运行我的东西,到目前为止还没有发生崩溃。编辑:i+1uint64_tuint64_t642147...32

clang 版本 8.0.0-3~ubuntu18.04.1 (tags/RELEASE_800/final) 目标:x86_64-pc-linux-gnu 线程模型:posix

而且我还有如下链接器标志

也许这也有干扰?我知道编译器资源管理器无法重现该错误,这很奇怪,需要我进一步调查。

0 投票
1 回答
92 浏览

avr - avr-gcc:是否有 UB 消毒剂

尝试将 UB sanitizer 用于 AVR 目标会给出:

可以在 UBsan 支持下构建 avr-gcc 吗?

0 投票
0 回答
132 浏览

javascript - 消毒剂javascript如何在html字符串中起作用

拜托,我需要你的帮助....很快

我在 Angular 6 中有这个代码行:

我显示结果的 HTML 代码是:

而且功能代码很简单:

不工作....我怎么能使用 satinizer 调用 goUpdate() 函数????

请....

0 投票
1 回答
3628 浏览

c - AddressSanitizer,这些术语是什么意思?

所以我正在使用 AddressSanitizer。但它在描述问题时使用了一些密集的术语。

是什么Heap left redzone意思?(还有其他人,但我最感兴趣的是fa因为有一个[fa]可能表明问题?)

0 投票
3 回答
762 浏览

address-sanitizer - 日志控制,用于 Address Sanitizer PLUS Undefined Behavior Sanitizer?

几个消毒剂(来自 GCC 或 Clang)不能组合 - 即在同一构建中同时使用,但 Asan 和 Ubsan 是可组合的 - 即我可以使用“-fsanitize=address,undefined -fsanitize-recover=all ...”构建并有一个执行两个消毒剂检查的 exe。到目前为止一切都很好。

不过,生成的可执行文件中的 LOGGING 似乎有问题。

在所有情况下,如果未在选项中设置“log_path”,则所有缺陷都会在 stderr 上报告。到目前为止还可以。但是尝试使用 log_path ,事情变得很奇怪:

  • 对于仅使用 Asan 构建的 exe,并将 ASAN_OPTIONS 设置为包含“log_path=./ASAN”,Address Saniitizer 缺陷将进入名为 ASAN 的文件中。
  • 对于仅使用 Ubsan 构建的 exe,并将 UBSAN_OPTIONS 设置为包含“log_path=./UBSAN”,未定义行为缺陷将进入名为 UBSAN 的文件中。
  • 对于同时使用 Asan 和 Ubsan 构建的 exe o Asan 输出到指定的日志文件,但 ubsan 输出只到 stderr在 ASAN_OPTIONS 和 UBSAN_OPTIONS 中设置,使用的 log_path 是 UBSAN 之一,但只包含 ASAN 结果

是否有一些隐藏的魔法可以让两个消毒剂写入同一个缺陷日志?


要重现,请使用每个消毒剂都有缺陷的简单测试用例:

构建并运行:(此处使用 g++ 7.3.0,但其他 GCC 版本以及 clang 7.1.0 也显示出相同的基本行为)

仅限 Asan - 按预期工作

归档 ASAN。29648 包含以

==29648==错误:AddressSanitizer:全局缓冲区溢出地址 0x000000400aca 在 pc 0x0000004009a5 bp 0x7ffffffffe090 sp 0x7ffffffffe088

在 main /tmp/foo.C:7 中的 0x000000400aca 线程 T0 0x4009a4 处读取大小 1

仅 Ubsan - 按预期工作

文件 UBSAN.29675 包含

foo.C:6:6:运行时错误:移位指数 32 对于 32 位类型“int”而言太大

Asan PLUS Ubsan - 奇怪的日志记录行为

ASAN_OPTIONS 被忽略,所有缺陷都报告在标准错误上。现在尝试设置 UBSAN_OPTIONS:

文件 UBSAN.30352 仅包含Asan缺陷:

==30352==错误:AddressSanitizer:全局缓冲区溢出地址 0x000000400aca 在 pc 0x0000004009a5 bp 0x7ffffffffe090 sp 0x7ffffffffe088 读取大小 1 在 0x000000400aca 线程 T0 0x4009a4 在主 /tmp/foo.C:7

并且 Ubsan 缺陷仅写入 stderr:

foo.C:6:6:运行时错误:移位指数 32 对于 32 位类型“int”而言太大

0 投票
1 回答
675 浏览

address-sanitizer - -fsanitize=address 应该进入 CFLAGS 还是 LDFLAGS?

我正在尝试使用 ( -fsanitize=address) 来使用地址清理程序,但我不确定它是否属于 CFLAGS 或 LDFLAGS。仅将其添加到 LDFLAGS 时,它实际上似乎工作正常,但我不知道这是巧合还是应该是这样。

-fsanitize=address编译本身需要,还是为链接步骤提供标志就足够了?

0 投票
1 回答
64 浏览

c++ - 无论如何都可以解决 ndefinedBehaviorSanitizer 给出的错误

我有以下代码:

如果用 编译它clang++ -fsanitize=address,undefined code.cpp,那么在运行期间它会产生类似的东西:

构造函数调用未对齐的地址 0x6060000025a0 用于类型 'boost::lockfree::queue *>::node',这需要 64 字节对齐 0x6060000025a0:注意:指针指向此处

01 00 00 3c 40 25 00 00 60 60 be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be bebe be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be安装

摘要:UndefinedBehaviorSanitizer:未定义的行为...

我怀疑错误是由 引起的boost::lockfree::queue<std::function<void(int id)> *>,但为什么呢?有没有办法解决它?

最后,我参考了一篇博boost::lockfree::queue<std::function<void(int id)> *>文,用类似的类替换了使用。

0 投票
1 回答
161 浏览

c++ - 应用地址清理程序后,空闲的无效指针消失了

运行我的项目时,我得到了一个 free: invalid 指针。但是当我尝试使用 -fsanitize=address 寻找根本原因时,错误消失了。当我移除消毒剂时,错误再次出现。谁能给出一些关于发生了什么以及如何在这种情况下查明问题的提示?谢谢!

更新:

我知道没有代码很难给出建议。由于项目非常大,而且我仍在尝试构建一个最小的工作示例,因此我现在无法提供任何代码。所以我想把我的问题改成一个更笼统的问题:

根据我对地址清理器的理解,它应该跟踪所有分配/访问操作,如果有任何无效访问,则报告错误。因此,如果不应用地址清理程序时出现错误,则应用清理程序后错误应该仍然存在。这种理解正确吗?