diff --git a/core/iwasm/libraries/libc-wasi/sandboxed-system-primitives/src/posix.c b/core/iwasm/libraries/libc-wasi/sandboxed-system-primitives/src/posix.c index bef4c19f3c..6b9344ae80 100644 --- a/core/iwasm/libraries/libc-wasi/sandboxed-system-primitives/src/posix.c +++ b/core/iwasm/libraries/libc-wasi/sandboxed-system-primitives/src/posix.c @@ -461,24 +461,6 @@ fd_determine_type_rights(os_file_handle fd, __wasi_filetype_t *type, struct __wasi_filestat_t buf; __wasi_errno_t error; - if (os_is_stdin_handle(fd)) { - *rights_base = RIGHTS_STDIN; - *rights_inheriting = RIGHTS_STDIN; - return __WASI_ESUCCESS; - } - - if (os_is_stdout_handle(fd)) { - *rights_base = RIGHTS_STDOUT; - *rights_inheriting = RIGHTS_STDOUT; - return __WASI_ESUCCESS; - } - - if (os_is_stderr_handle(fd)) { - *rights_base = RIGHTS_STDERR; - *rights_inheriting = RIGHTS_STDERR; - return __WASI_ESUCCESS; - } - error = os_fstat(fd, &buf); if (error != __WASI_ESUCCESS) return error; @@ -542,6 +524,21 @@ fd_determine_type_rights(os_file_handle fd, __wasi_filetype_t *type, break; } + if (os_is_stdin_handle(fd)) { + *rights_base = RIGHTS_STDIN; + *rights_inheriting = RIGHTS_STDIN; + } + + if (os_is_stdout_handle(fd)) { + *rights_base = RIGHTS_STDOUT; + *rights_inheriting = RIGHTS_STDOUT; + } + + if (os_is_stderr_handle(fd)) { + *rights_base = RIGHTS_STDERR; + *rights_inheriting = RIGHTS_STDERR; + } + return error; }