cert-err34-c

此检查标记对字符串到数字转换函数的调用,这些函数未验证转换的有效性,例如 atoi()scanf()。它不会标记对 strtol() 或其他相关转换函数的调用,这些函数执行更好的错误检查。

#include <stdlib.h>

void func(const char *buff) {
  int si;

  if (buff) {
    si = atoi(buff); /* 'atoi' used to convert a string to an integer, but function will
                         not report conversion errors; consider using 'strtol' instead. */
  } else {
    /* Handle error */
  }
}

此检查对应于 CERT C 编码标准规则 ERR34-C。在将字符串转换为数字时检测错误.