问题描述
core_loader_napi.cpp 的 ReadFile 按 st_size 直接 data.resize(st_size),未设置上限;TestCoreLoader 路径也没有异常保护。
当输入超大文件时,可能触发大内存分配失败(bad_alloc)并沿 NAPI 回调向外逃逸,导致进程 terminate。
代码证据
- 无上限的 size 读取与分配:
entry/src/main/cpp/app/napi/core_loader_napi.cpp:41
entry/src/main/cpp/app/napi/core_loader_napi.cpp:46
- 该分配路径由 NAPI 入口直接调用,未见异常保护:
entry/src/main/cpp/app/napi/core_loader_napi.cpp:264
entry/src/main/cpp/app/napi/core_loader_napi.cpp:291
- 对照:项目其他资源读取路径已设置 512MB 上限:
entry/src/main/cpp/platform/resource/platform_resource_manager.cpp:72
entry/src/main/cpp/platform/resource/platform_resource_manager.cpp:103
官方/权威依据
std::vector::resize 可能抛出分配相关异常:
- 未捕获异常会触发
std::terminate:
影响
- 调试接口输入异常大文件时,可能导致进程级崩溃(DoS)。
- 与项目其它文件加载路径的容量治理策略不一致。
修复建议
- 为
ReadFile 增加统一最大读取上限(与资源路径一致,如 512MB)。
- 在
TestCoreLoader 增加异常保护并返回结构化错误。
- 将“测试路径文件读取”与生产路径统一到同一安全阈值策略。
验收标准
- 超大输入不会导致进程崩溃。
- 返回明确错误(而非崩溃或未定义行为)。
问题描述
core_loader_napi.cpp的ReadFile按st_size直接data.resize(st_size),未设置上限;TestCoreLoader路径也没有异常保护。当输入超大文件时,可能触发大内存分配失败(
bad_alloc)并沿 NAPI 回调向外逃逸,导致进程terminate。代码证据
entry/src/main/cpp/app/napi/core_loader_napi.cpp:41entry/src/main/cpp/app/napi/core_loader_napi.cpp:46entry/src/main/cpp/app/napi/core_loader_napi.cpp:264entry/src/main/cpp/app/napi/core_loader_napi.cpp:291entry/src/main/cpp/platform/resource/platform_resource_manager.cpp:72entry/src/main/cpp/platform/resource/platform_resource_manager.cpp:103官方/权威依据
std::vector::resize可能抛出分配相关异常:std::terminate:影响
修复建议
ReadFile增加统一最大读取上限(与资源路径一致,如 512MB)。TestCoreLoader增加异常保护并返回结构化错误。验收标准