c - 如果没有崩溃,我真的应该担心修复 null defres 吗?

标签 c

Clang 的 scan-build 报告了我的项目中相当多的空指针取消引用,但是,我并没有真正看到任何异常行为(在使用它的 6 年中),即:

Dereference of null pointer (loaded from variable chan)

char *tmp;
CList *chan = NULL; 
/* This is weird because chan is set via do_lookup so why could it be NULL? */
chan = do_lookup(who, me, UNLINK);
if (chan)
tmp = do_lookup2(you,me,0);

prot(get_sec_var(chan->zsets));

                 ^^^^

我知道 null deref 会导致崩溃,但这真的像某些人所说的那样是一个很大的安全问题吗?这种情况怎么办?

最佳答案

取消引用NULL 指针是未定义的行为。它可以显示任何行为,它可能会崩溃,也可能不会崩溃,但您必须修复这些问题!

关于未定义行为的真相是它服从 Murphy's Law

“任何可能出错的事情都会出错”

关于c - 如果没有崩溃,我真的应该担心修复 null defres 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12685804/

相关文章:

c - 是否可以为数组名称分配一个新值?

c - c中具有不同类型参数的可变参数函数

c - 包含 'double' 数组的结构中的 Scanf 不起作用?

C:由于没有在其他地方释放内存而导致段错误。如何释放内存

c - libavcodec/libx264 不尊重 keyint_min

c - 当我从函数中更改它时,为什么 `src` 没有更改?

c++ - C wINnet 互联网连接()

c - 如何使用 "%f"以正确的精度将 double 值填充到字符串中

c - 使用 fread() 读取基于文本的文件 - 最佳实践

c - C 中结构体数组的指针