From 32164a180cf00c01c0756cbae97d0fcacd09708f Mon Sep 17 00:00:00 2001 From: Ingo Weinhold Date: Thu, 1 Mar 2007 04:46:16 +0000 Subject: [PATCH] Set reasonable permissions for the root directory. Haiku seems to be a bit pickier than BeOS. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20263 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- .../file_systems/userlandfs/r5/src/test/ramfs/Node.cpp | 2 +- .../file_systems/userlandfs/r5/src/test/ramfs/Node.h | 4 ++-- .../file_systems/userlandfs/r5/src/test/ramfs/Volume.cpp | 7 +++++-- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/tests/add-ons/kernel/file_systems/userlandfs/r5/src/test/ramfs/Node.cpp b/src/tests/add-ons/kernel/file_systems/userlandfs/r5/src/test/ramfs/Node.cpp index 084f4606e0..33bd1dcdbd 100644 --- a/src/tests/add-ons/kernel/file_systems/userlandfs/r5/src/test/ramfs/Node.cpp +++ b/src/tests/add-ons/kernel/file_systems/userlandfs/r5/src/test/ramfs/Node.cpp @@ -159,7 +159,7 @@ Node::CheckPermissions(int mode) const // root has always read/write permission, but at least one of the // X bits must be set for execute permission permissions = userPermissions | groupPermissions | otherPermissions - | S_IROTH | S_IWOTH; + | ACCESS_R | ACCESS_W; // user is node owner } else if (uid == fUID) permissions = userPermissions; diff --git a/src/tests/add-ons/kernel/file_systems/userlandfs/r5/src/test/ramfs/Node.h b/src/tests/add-ons/kernel/file_systems/userlandfs/r5/src/test/ramfs/Node.h index c85fd13d4e..39528a49df 100644 --- a/src/tests/add-ons/kernel/file_systems/userlandfs/r5/src/test/ramfs/Node.h +++ b/src/tests/add-ons/kernel/file_systems/userlandfs/r5/src/test/ramfs/Node.h @@ -57,8 +57,8 @@ public: // stat data -// void SetMode(mode_t mode) { fMode = mode; } - inline void SetMode(mode_t mode) { fMode = fMode & S_IFMT | mode & ~S_IFMT; } + inline void SetMode(mode_t mode) + { fMode = fMode & ~S_IUMSK | mode & S_IUMSK; } inline mode_t GetMode() const { return fMode; } inline void SetUID(uid_t uid) { fUID = uid; } diff --git a/src/tests/add-ons/kernel/file_systems/userlandfs/r5/src/test/ramfs/Volume.cpp b/src/tests/add-ons/kernel/file_systems/userlandfs/r5/src/test/ramfs/Volume.cpp index 1ed59e74d3..49741159a7 100644 --- a/src/tests/add-ons/kernel/file_systems/userlandfs/r5/src/test/ramfs/Volume.cpp +++ b/src/tests/add-ons/kernel/file_systems/userlandfs/r5/src/test/ramfs/Volume.cpp @@ -230,9 +230,12 @@ Volume::Mount(nspace_id id) // create the root dir if (error == B_OK) { fRootDirectory = new(nothrow) Directory(this); - if (fRootDirectory) + if (fRootDirectory) { + // set permissions: -rwxr-xr-x + fRootDirectory->SetMode( + S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH); error = fRootDirectory->Link(NULL); - else + } else SET_ERROR(error, B_NO_MEMORY); } // set mounted flag / cleanup on error