| Index: native_client_sdk/src/libraries/nacl_io/kernel_proxy.cc
|
| diff --git a/native_client_sdk/src/libraries/nacl_io/kernel_proxy.cc b/native_client_sdk/src/libraries/nacl_io/kernel_proxy.cc
|
| index 0837647e566a7c19882485d665e2271d4ab07bbe..edaa202a1f1d58f7f7811581090b449955da3d3f 100644
|
| --- a/native_client_sdk/src/libraries/nacl_io/kernel_proxy.cc
|
| +++ b/native_client_sdk/src/libraries/nacl_io/kernel_proxy.cc
|
| @@ -209,7 +209,7 @@ int KernelProxy::open_resource(const char* path) {
|
| int KernelProxy::open(const char* path, int open_flags, mode_t mode) {
|
| ScopedFilesystem fs;
|
| ScopedNode node;
|
| - mode_t mask = ~GetUmask();
|
| + mode_t mask = ~GetUmask() & S_MODEBITS;
|
|
|
| Error error = AcquireFsAndNode(path, open_flags, mode & mask, &fs, &node);
|
| if (error) {
|
| @@ -372,7 +372,8 @@ int KernelProxy::mkdir(const char* path, mode_t mode) {
|
| return -1;
|
| }
|
|
|
| - error = fs->Mkdir(rel, mode & ~GetUmask());
|
| + mode_t mask = ~GetUmask() & S_MODEBITS;
|
| + error = fs->Mkdir(rel, mode & mask);
|
| if (error) {
|
| errno = error;
|
| return -1;
|
| @@ -878,7 +879,7 @@ int KernelProxy::fchmod(int fd, mode_t mode) {
|
| return -1;
|
| }
|
|
|
| - error = handle->node()->Fchmod(mode);
|
| + error = handle->node()->Fchmod(mode & S_MODEBITS);
|
| if (error) {
|
| errno = error;
|
| return -1;
|
| @@ -1189,7 +1190,7 @@ int KernelProxy::sigaction(int signum,
|
| }
|
|
|
| mode_t KernelProxy::umask(mode_t mask) {
|
| - return SetUmask(mask);
|
| + return SetUmask(mask & S_MODEBITS);
|
| }
|
|
|
| #ifdef PROVIDES_SOCKET_API
|
|
|