Skip to content

G.SAF.FFI.03 禁止调用 C 不可重入函数

【级别】 要求

【描述】

在多线程条件下调用外部不可重入函数时,有可能会因竞争条件而导致意外的系统状态和不可预测的结 果,或导致拒绝服务和任意代码执行等内存安全问题。

C 语言标准库中常见的不可重入函数包括:

getenv() , strtok() , strerror() , asctime() , ctime() , localtime() , gmtime() , setlocale() , localeconv() , syslog() , getlogin() 等。

开发者能在 Unsafe Rust 下直接使用 extern "C"libc 库调用这些函数。

一般情况下,开发者可将这些函数替换为其可重入版本,否则需要根据情况解决或预防因竞争而产生的问题。