182 Star 1.1K Fork 275

MindSpore/community

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
security_coding_violation_cases.md 1.24 KB
一键复制 编辑 原始数据 按行查看 历史
刘崇鸣 提交于 3年前 . Update coding guide

典型违反安全编码案例

案例1:未对安全函数返回值进行校验

修改前:

进行内存拷贝过程中,未对拷贝函数返回值进行校验,导致拷贝失败时无法捕获失败信息。

(void) memcpy_s(output_addr, output->size, input_addr, input->size);

修改后

if (memcpy_s(output_addr, output->size, input_addr, input->size) != EOK) {
    ...
}

案例2:未对指针是否为空进行校验

修改前:

primitive由外部传入,使用指针primitive前,未对指针是否为空进行校验,若指针为空,则调用name()成员函数时会产生空指针引用导致程序挂死。

AbstractBasePtr InferImplPad(const AnalysisEnginePtr &, const PrimitivePtr &primitive,
                             const AbstractBasePtrList &args_spec_list) {
  const std::string op_name = primitive->name();  // 未对meta_graph_指针进行校验
  ...
}

修改后:

AbstractBasePtr InferImplPad(const AnalysisEnginePtr &, const PrimitivePtr &primitive,
                             const AbstractBasePtrList &args_spec_list) {
  MS_EXCEPTION_IF_NULL(primitive);
  const std::string op_name = primitive->name();  // 校验指针是否为空后再使用该指针
  ...
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/mindspore/community.git
git@gitee.com:mindspore/community.git
mindspore
community
community
master

搜索帮助