mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-16 06:46:33 +00:00
[lldb][windows] _wsopen_s does not accept bits other than _S_IREAD | _S_IWRITE
When sending file from a Linux host to a Windows remote, Linux host will try to copy the source file's permission bits, which will contain `_S_I?GRP` and `_S_I?OTH` bits. Those bits are rejected by `_wsopen_s`, causing it to return EINVAL. This patch masks out the rejected bits. GitHub issue: #64313 Reviewed By: jasonmolenda, DavidSpickett Differential Revision: https://reviews.llvm.org/D156817 (cherry picked from commit 9a4b3fdb82327e808213070fd157be3c557b8b9d)
This commit is contained in:
parent
1b1113731f
commit
4a999da214
@ -101,6 +101,8 @@ int FileSystem::Open(const char *path, int flags, int mode) {
|
||||
std::wstring wpath;
|
||||
if (!llvm::ConvertUTF8toWide(path, wpath))
|
||||
return -1;
|
||||
// All other bits are rejected by _wsopen_s
|
||||
mode = mode & (_S_IREAD | _S_IWRITE);
|
||||
int result;
|
||||
::_wsopen_s(&result, wpath.c_str(), flags, _SH_DENYNO, mode);
|
||||
return result;
|
||||
|
Loading…
x
Reference in New Issue
Block a user