From 5a7756068ced2902ee640755c0faa8b291a8f04a Mon Sep 17 00:00:00 2001 From: PulkoMandy Date: Mon, 19 Dec 2022 16:52:56 +0100 Subject: [PATCH] packagefs: do not use auto-generated attributes for root node The root node does not come from any package, so it shouldn't have the SYS:PACKAGE_FILE attribute. Remove it from there. Fixes #12453 Change-Id: Icb695bb90644753d4af1c4215c4ad3c2dd9c5e68 Reviewed-on: https://review.haiku-os.org/c/haiku/+/5951 Tested-by: Commit checker robot Reviewed-by: waddlesplash --- .../packagefs/nodes/UnpackingDirectory.cpp | 14 ++++++++++++++ .../packagefs/nodes/UnpackingDirectory.h | 3 +++ 2 files changed, 17 insertions(+) diff --git a/src/add-ons/kernel/file_systems/packagefs/nodes/UnpackingDirectory.cpp b/src/add-ons/kernel/file_systems/packagefs/nodes/UnpackingDirectory.cpp index fae42662fb..75ba3cb6ee 100644 --- a/src/add-ons/kernel/file_systems/packagefs/nodes/UnpackingDirectory.cpp +++ b/src/add-ons/kernel/file_systems/packagefs/nodes/UnpackingDirectory.cpp @@ -7,6 +7,7 @@ #include "UnpackingDirectory.h" #include "DebugSupport.h" +#include "EmptyAttributeDirectoryCookie.h" #include "UnpackingAttributeCookie.h" #include "UnpackingAttributeDirectoryCookie.h" #include "Utils.h" @@ -232,6 +233,19 @@ RootDirectory::RootDirectory(ino_t id, const timespec& modifiedTime) } +status_t +RootDirectory::OpenAttributeDirectory(AttributeDirectoryCookie*& _cookie) +{ + if (HasVFSInitError()) + return B_ERROR; + + _cookie = new(std::nothrow) EmptyAttributeDirectoryCookie; + if (_cookie == nullptr) + return B_NO_MEMORY; + return B_OK; +} + + timespec RootDirectory::ModifiedTime() const { diff --git a/src/add-ons/kernel/file_systems/packagefs/nodes/UnpackingDirectory.h b/src/add-ons/kernel/file_systems/packagefs/nodes/UnpackingDirectory.h index 6d09c27aec..2e93764c36 100644 --- a/src/add-ons/kernel/file_systems/packagefs/nodes/UnpackingDirectory.h +++ b/src/add-ons/kernel/file_systems/packagefs/nodes/UnpackingDirectory.h @@ -58,6 +58,9 @@ public: RootDirectory(ino_t id, const timespec& modifiedTime); + virtual status_t OpenAttributeDirectory( + AttributeDirectoryCookie*& _cookie) override; + virtual timespec ModifiedTime() const; private: