文件最后提交记录最后更新时间
Initial commit5 个月前
[refactor]安全问题修改 Co-authored-by: RainbowWhp<wanghaopeng3@huawei.com> # message auto-generated for no-merge-commit merge: !75 merge br_saf into master [refactor]安全问题修改 Created-by: RainbowWhp Commit-by: RainbowWhp Merged-by: ascend-robot Description: ### 1. 修改描述 - **修改原因:** 涉及安全问题 1. 使用字符串拼接构造shell命令后调用subprocess.getstatusoutput(cmd),如果参数包含空格或特殊字符会导致命令注入攻击。getstatusoutput默认使用shell执行命令 2. 使用std::srand()和rand()生成伪随机数,rand()生成的是伪随机数,不适合用于安全用途。当前用于生成临时目录名,存在被预测的风险 3. 使用vfork()创建子进程。vfork()在子进程中共享父进程地址空间,如果在vfork()之后、exec*()之前修改变量可能导致未定义行为或安全漏洞 4. 使用fork()创建子进程执行外部命令。fork()在多线程环境下可能导致死锁或资源竞争问题(fork()只复制当前线程,其他线程持有的锁可能保持锁定) - **修改方案:** 1. 使用shutil.copytree替代shell命令 2. 使用std::random_device 安全随机数 3. 使用fork()替代vfork(),或使用posix_spawn() - **修改内容:** 1. package/script/parser.py:312-327 2. csrc/utils/cpputils/filesystem.cpp:50-54 3. csrc/utils/cpputils/cmd_execute.cpp:87 4. csrc/utils/cpputils/cmd_execute.cpp:115 5. csrc/op_runner/runner_impl/exec_binary_runner.cpp:41 - [ ] **涉及代码双合**(贴上另一个PR链接): ---- ### 2. 功能验证 - [x] **功能自验截图**(请确保不体现个人信息) - [ ] **冒烟是否通过** ---- ### 3. 代码检视 - **要求:** - 合入功能代码大于 200 行,需要sig会议申报代码检视议题,并在PR中标注会议。 - committer评估是否需要在sig会议进行代码检视。 - 参与检视的committer人员名单与检视时间。 - 大于 1000 行代码原则上不允许合入,需进行备案。 - [x] **是否经过代码检视** - [x] **是否具备UT测试用例看护** - [ ] **是否需要在sig会议中进行代码检视** - **检视committer人员名单与检视时间:** ---- ### 4. 资料修改自检 - **资料修改:** ---- See merge request: Ascend/msopprof!752 个月前
[refactor]公共方法的提取、使用及删除,提高代码可维护性 Co-authored-by: yan_yw<yanyuwei2@huawei.com> # message auto-generated for no-merge-commit merge: !87 merge refa into master [refactor]公共方法的提取、使用及删除,提高代码可维护性 Created-by: yan_yw Commit-by: yan_yw Merged-by: ascend-robot Description: ### 1. 修改描述 - **修改原因:** 存在公共方法重复、未使用或者不同芯片行为可提取公共方法的问题,主要见于cpputils/ustring.h存在多个分隔字符串公共方法,std::fabs() <= std::numeric_limits<float>::epsilon()写法未使用公共方法IsZero()等。 - **修改方案:** 提取公共方法,合并及删除重复公共方法,公共头文件正确分类 - **修改内容:** 1、cpputils/ustring.h存在多个分隔字符串公共方法,如Split,SplitString(template)等,去除Split,将原本使用Split的方法都改成SplitString 2、cpputils/data_format.h定义混乱,将其中业务相关的ProfConfig移入业务代码,文件相关的定义移入filesystem.h,csv相关的定义移入csv_parser.h 3、DataHandler传递数据至可视化模块时,根据不同视图重新分类传值一遍PMU ID列表,很难维护。提取公共方法GetEventsByType,类内去除芯片限制,将已采集的pmu map直接传给可视化模块,便于后续维护 4、多处比较代码可使用公共方法IsZero()替代,如std::fabs(dur) <= std::numeric_limits<float>::epsilon()换成IsZero(dur) - [ ] **涉及代码双合**(贴上另一个PR链接): ---- ### 2. 功能验证 - [x] **功能自验截图**(请确保不体现个人信息) - [x] **冒烟是否通过** ---- ### 3. 代码检视 - **要求:** - 合入功能代码大于 200 行,需要sig会议申报代码检视议题,并在PR中标注会议。 - committer评估是否需要在sig会议进行代码检视。 - 参与检视的committer人员名单与检视时间。 - 大于 1000 行代码原则上不允许合入,需进行备案。 - [x] **是否经过代码检视** - [x] **是否具备UT测试用例看护** - [ ] **是否需要在sig会议中进行代码检视** no - **检视committer人员名单与检视时间:** ---- ### 4. 资料修改自检 - **资料修改:** ---- NA See merge request: Ascend/msopprof!872 个月前