已合并
新增 CloudDisk 文件不存在和名称过长错误码 #4266
新增 CloudDisk 文件不存在和名称过长错误码 #4266
已合并
phybee创建于 23 天前
phybee
phybee
23 天前

Description:

新增 CloudDisk 文件不存在和文件名过长错误码,用于区分占位符查询、占位符创建等链路中的目标路径不存在和文件名过长场景。

本次改动包括:

  • CloudDiskService 内部错误码:E_FILE_NOT_EXIST = 34400024
  • CloudDiskService 内部错误码:E_NAME_TOO_LONG = 34400025
  • NDK 对外错误码:CLOUD_DISK_FILE_NOT_EXIST = 34400024
  • NDK 对外错误码:CLOUD_DISK_NAME_TOO_LONG = 34400025
  • NDK innerToNErrTable 中补充上述两个错误码映射
  • ConvertPlaceholderXattrErrno 中将 ENOENT 转换为 E_FILE_NOT_EXIST
  • 公共 ConvertErrnoToCloudDiskError 中将 ENAMETOOLONG 转换为 E_NAME_TOO_LONG
  • CreatePlaceholder 错误归一化中保留 E_NAME_TOO_LONG,避免被转换为其他错误码
  • 补充 CloudDiskService 和 NDK 单元测试,覆盖 xattr errno 映射、create placeholder 名称过长、NDK 对外错误码转换等场景

Issue number:

https://gitcode.com/openharmony/filemanagement_dfs_service/issues/3164

Test & Result:

已执行:

  • git diff --check:通过
  • git diff --cached --check:通过
  • diff 范围检查:未包含 interfaces/kits/js、ANI 或旧 cloudDiskManager NAPI 模块文件
  • ./build.sh --product-name rk3568 --build-target clouddisk_service_test --build-target ndk_test:通过
  • 设备侧小集合 UT(USB target 150100424a5444345203698b4ed38800):CloudDiskServiceStaticTest.QueryPlaceholderByXattrTest004:CloudDiskServiceStaticTest.QueryPlaceholderByXattrTest011:CloudDiskServiceStaticTest.ConvertPlaceholderXattrErrnoTest001:CloudDiskServiceStaticTest.IsPlaceholderFileInnerTest011:CloudDiskServiceStaticTest.CreatePlaceholderBranchTest009:CloudDiskServiceStaticTest.CreatePlaceholderBranchTest010:CloudDiskServiceStaticTest.CreatePlaceholderFileInnerBranchTest008,7/7 通过
  • 设备侧小集合 UT(USB target 150100424a5444345203698b4ed38800):CloudDiskManagerTest.ConvertToErrorCodeTest003:CloudDiskManagerTest.CreatePlaceholderFileTest005:CloudDiskManagerTest.IsPlaceholderFileIpcTest007:CloudDiskManagerTest.IsPlaceholderFileIpcTest008,4/4 通过
  • 设备侧全量 UT:cloud_disk_service_static_test,72/72 通过
  • 设备侧全量 UT:cloud_disk_manager_test,24/24 通过

说明:

  • OpenHarmony 构建根固定使用 foundation/filemanagement/dfs_service 主 checkout;测试前已确认本 PR 7 个错误码相关文件与 codex/cloud-disk-error-codes 分支内容一致。

CodeCheck:

类型自检项自检结果
多线程相关在类的成员变量中定义了vector/map/list等容器类型,且在多个成员函数中有操作时,需要加锁保护自检结果:本次未新增类成员容器或共享可变状态。
定义全局变量,在多个函数中都有操作时,需要加锁保护自检结果:本次未新增可变全局变量;仅新增错误码枚举和静态错误码映射项。
内存相关调用外部接口时,确认是否对返回值做了判断,尤其外部接口返回了nullptr的情况,避免进程崩溃自检结果:本次未新增外部指针返回值处理逻辑;仅调整 errno/错误码转换。
调用安全函数时,如memcpy_s等,是否检查其返回值自检结果:本次未新增 memcpy_s 等安全函数调用。
检查函数中是否涉及了内存或资源申请(如文件句柄),注意每个异常退出流程,是否都已经将资源释放(推荐使用RAII)自检结果:本次未新增内存或文件句柄申请;只保留/转换既有错误返回。
隐式内存分配场景:realpath、ReadParcelable序列化、cJSON相关函数时等,需主动释放或使用智能指针自检结果:本次未新增 realpath、ReadParcelable、cJSON 等隐式分配场景。
校验外部输入使用nlohmann:json解析外部输入时,需判断参数类型是否符合预期自检结果:本次未新增 json 解析。
所有外部输入均不可信,需判断外部输入是否直接作为内存分配的大小,数组下标、循环条件、SQL查询等自检结果:本次未新增外部输入作为内存大小、数组下标、循环条件或 SQL 查询的逻辑。
外部输入的路径不可信,需使用realpath做标准化处理,并判断路径的合法性自检结果:本次未新增路径解析逻辑;沿用既有路径校验和转换流程,仅补充路径不存在/名称过长错误码返回。
外部输入包括对外提供的接口,IPC的proxy/stub接口,序列化/反序列化接口等自检结果:本次未新增接口或 IPC 码;NDK 对外错误码映射已补充测试覆盖。
数学运算代码中是否混合了加减乘除等运算,需检查是否可能导致整数溢出或符号翻转自检结果:本次未新增数学运算。
需检查代码是否有高精度数字转换为低精度的操作,如果必须,建议使用C++安全类型转换接口自检结果:本次未新增数值精度转换。
秘钥相关如变量临时保存了口令、秘钥等,需要在使用完成后及时清空(内存memset掉)自检结果:本次未新增口令、秘钥处理。
权限相关作为系统服务对外提供了接口,是否做了权限保护和校验(如需要),只允许申请了权限的应用访问自检结果:本次未新增系统服务接口或权限策略;仅调整既有接口返回错误码。
内核对外提供了设备节点,是否做了权限保护,只允许特定的系统服务访问自检结果:本次未新增内核设备节点。
内核操作如有mmap操作,并使用remap_pfn_range进行地址映射时,校验起始地址是否是用户态输入且没有做合法性校验自检结果:本次未新增 mmap/remap_pfn_range。
是否有copy_from_user,并对外部输入的数据做了长度校验,以防止缓冲区溢出自检结果:本次未新增 copy_from_user。
是否有使用copy_to_user,并在返回到用户态时,对数据做了完整初始化,或使用memset清空后再赋值自检结果:本次未新增 copy_to_user。
likedislike
Pull Request已成功合入, 合并人@openharmony_ci
(感谢 phybee 的贡献)
openharmony_ciopenharmony_ci成员
23 天前 添加了label:waiting_on_author
openharmony_ci
openharmony_ci成员
23 天前 评论:

感谢提交 Pull Requests!如果您提交的PR已经开发完毕,请评论 "start build" 触发门禁,更多交互操作,请访问OpenHarmony社区支持命令清单。如果需要调整订阅PR、Issue的变更状态,请访问订阅链接


Thanks for submitting the pull request. If your Pull Request has already been developed, you can leave a "start build" comment to trigger the gated system. For more commands, please visit OpenHarmony Command List. If you need to change the subscription of a Pull Request or Issue, please visit the link.

likedislike
openharmony_ciopenharmony_ci成员
23 天前 添加了label:dco检查成功
phybeephybee
23 天前 修改了pull request 的描述
phybeephybee
23 天前 修改了pull request 的描述
此处折叠了46条消息 查看更多
陈劲龙陈劲龙成员
22 天前 通过审查
openharmony_ciopenharmony_ci成员
22 天前 关闭了关联的issue
openharmony_ciopenharmony_ci成员
22 天前 合入了pull request,合并节点 SHA:43d1a943e6dd7b569250e65e6475657b80644277
openharmony_ciopenharmony_ci成员
22 天前 删除了label:waiting_for_review
openharmony_ciopenharmony_ci成员
22 天前 添加了label:merged