按源验证刀库DB参数拆分
源依据:LinuxCNC src/emc/tooldata/tooldata_db.cc 的 tooldata_db_init() 使用 strtok_r 原地拆分 progname_plus_args,再检查 argv[0] 是否可执行。 结论:wasm-safe tooldata runtime probe 增加多参数输入副作用断言,确认缺失 DB 程序返回失败前仍保留 LinuxCNC 的参数拆分边界,减少外部 tooldata DB 替换风险。 检查:./test-linuxcnc-wasm-tooldata-link.sh;./test-native.sh;./test-linuxcnc-source-link.sh。
This commit is contained in:
@@ -203,6 +203,19 @@ int main() {
|
||||
if (separator == std::string::npos || missing_db_program_with_arg[separator] != 0) {
|
||||
return 56;
|
||||
}
|
||||
char missing_db_program_with_args[] = "/tmp/cnc_tooldata_probe_missing_db_program alpha beta";
|
||||
if (tooldata_db_init(missing_db_program_with_args, 0) != -1) {
|
||||
return 83;
|
||||
}
|
||||
// LinuxCNC src/emc/tooldata/tooldata_db.cc tokenizes progname_plus_args
|
||||
// in place with strtok_r() before checking whether argv[0] is executable.
|
||||
if (missing_db_program_with_args[42] != 0 ||
|
||||
missing_db_program_with_args[48] != 0 ||
|
||||
std::strcmp(missing_db_program_with_args, "/tmp/cnc_tooldata_probe_missing_db_program") != 0 ||
|
||||
std::strcmp(missing_db_program_with_args + 43, "alpha") != 0 ||
|
||||
std::strcmp(missing_db_program_with_args + 49, "beta") != 0) {
|
||||
return 84;
|
||||
}
|
||||
std::string missing_db_program_string = make_temp_path("cnc_tooldata_probe_missing_db_program");
|
||||
std::vector<char> missing_db_program(
|
||||
missing_db_program_string.begin(),
|
||||
|
||||
Reference in New Issue
Block a user