已关闭
build.sh 中 --sign-script 选项缺少 require_option_value 校验 #1540
崇理战队创建于  20 天前关闭于  19 天前
崇理战队
20 天前 创建

build.shset_options 函数中,--sign-script 选项直接使用 $2 而没有先调用 require_option_value 校验:

--sign-script)
    CUSTOM_SIGN_SCRIPT="$(realpath $2)"
    shift 2
    ;;

对比同文件中其他需要值的选项(如 --cache--cann_path--changed_file 等),都会先调用 require_option_value "$1" "$2" 来确保 $2 存在且不是另一个选项(不以 - 开头)。

如果用户漏掉了 --sign-script 的参数值,例如 bash build.sh --pkg --sign-script,那么:

  1. $2 为空,realpath 会报错或读取 stdin(取决于 realpath 实现)
  2. shift 2 会跳过下一个参数,可能导致后续参数解析混乱
  3. CUSTOM_SIGN_SCRIPT 会被设为空字符串或错误值,构建过程中可能产生难以定位的问题

建议增加 require_option_value 校验,与其他选项保持一致:

--sign-script)
    require_option_value "$1" "$2"
    CUSTOM_SIGN_SCRIPT="$(realpath $2)"
    shift 2
    ;;

另外,如果 $2 指向的文件不存在,realpath 也会报错。可以考虑在 realpath 后增加文件存在性检查。

likedislike
shaonaiteshaonaite成员
19 天前 将 chupeng1996 设为负责人
Cchupeng成员
19 天前 将 m0_56712298 设为负责人,移除负责人 chupeng1996
Cchupeng成员
19 天前 将 chupeng1996 设为负责人
chupeng成员
19 天前 评论:

你好,已收到该问题,待分析确认后修复

likedislike
UUFOunder成员
19 天前 关联了pull request:docs: 修正 API 文档描述及示例
UUFOunder成员
19 天前 删除了关联的pull request:docs: 修正 API 文档描述及示例
m0_56712298m0_56712298成员
19 天前 关联了pull request:fix: validate --sign-script option value
CANN-robotCANN-robot成员
19 天前 关闭了 issue
CANN-robotCANN-robot成员
19 天前 添加了label:resolved