mirror of
https://github.com/bytecodealliance/wasm-micro-runtime.git
synced 2024-11-26 07:21:54 +00:00
Fix WASI Path Mapping Processing (#3923)
Filesystem paths can be mapped from the host path to a guest path using the format `<guest-path>::<host-path>`. Previously `strtok` was used to find the `::` delimiter. Unfortunately `strtok` processes each delimiter character individually. This meant that the code was ~equivalent to `strtok(mapping_copy, ":")` which breaks with Windows-style paths (E.g. `C:\my_path\`). To fix this `strstr` is used to search for the exact delimiter.
This commit is contained in:
parent
00c2aa10a8
commit
9d8150efae
|
@ -3631,8 +3631,14 @@ wasm_runtime_init_wasi(WASMModuleInstanceCommon *module_inst,
|
|||
|
||||
bh_memcpy_s(mapping_copy, max_len, map_dir_list[i],
|
||||
(uint32)(strlen(map_dir_list[i]) + 1));
|
||||
map_mapped = strtok(mapping_copy, "::");
|
||||
map_host = strtok(NULL, "::");
|
||||
|
||||
const char *delim = "::";
|
||||
char *delim_pos = strstr(mapping_copy, delim);
|
||||
if (delim_pos) {
|
||||
*delim_pos = '\0';
|
||||
map_mapped = mapping_copy;
|
||||
map_host = delim_pos + strlen(delim);
|
||||
}
|
||||
|
||||
if (!map_mapped || !map_host) {
|
||||
if (error_buf)
|
||||
|
|
Loading…
Reference in New Issue
Block a user