我们的源函数是source,我们的接收器函数是sink, source从不返回空值.下面代码中的污染流是什么?1 void foo(char *arg) { 2 if (arg == nullptr) { 3 sink(arg); 4 } 5 } 6 7 int main(void) { 8 char *x = source(); 9 foo(x); 10 char *y = nullptr; 11 foo(y); 12 }
时间: 2023-12-28 21:04:45 浏览: 108
OpenSSL中文手册之BIO库详解source/sink类型的BIO是数据源
在上面的代码中,污染流发生在第 3 行,因为在这一行中,如果传递给 foo 函数的参数 arg 是 nullptr,那么它将被直接传递给了 sink 函数。如果在 foo 函数中调用 sink 函数时传递了 nullptr,那么就会出现未定义行为,这可能导致程序崩溃或者执行不可预测的操作。因此,我们应该在调用 sink 函数之前检查 arg 是否为 nullptr。
阅读全文