Loading...
--- dyld/dyld-732.8/dyld3/shared-cache/FileUtils.cpp
+++ dyld/dyld-852.2/dyld3/shared-cache/FileUtils.cpp
@@ -47,10 +47,7 @@
#include "FileUtils.h"
#include "StringUtils.h"
#include "Diagnostics.h"
-
-#if __MAC_OS_X_VERSION_MIN_REQUIRED < 101200
-extern "C" int rootless_check_trusted_fd(int fd) __attribute__((weak_import));
-#endif
+#include "JSONReader.h"
void iterateDirectoryTree(const std::string& pathPrefix, const std::string& path, bool (^dirFilter)(const std::string& path), void (^fileCallback)(const std::string& path, const struct stat&), bool processFiles, bool recurse)
@@ -63,7 +60,7 @@
}
while (dirent* entry = readdir(dir)) {
struct stat statBuf;
- std::string dirAndFile = path + "/" + entry->d_name;
+ std::string dirAndFile = path + (path.back() != '/' ? "/" : "") + entry->d_name;
std::string fullDirAndFile = pathPrefix + dirAndFile;
switch ( entry->d_type ) {
case DT_REG:
@@ -134,49 +131,6 @@
}
return nullptr;
-}
-
-static bool sipIsEnabled()
-{
- static bool rootlessEnabled;
- static dispatch_once_t onceToken;
- // Check to make sure file system protections are on at all
- dispatch_once(&onceToken, ^{
- rootlessEnabled = (csr_check(CSR_ALLOW_UNRESTRICTED_FS) != 0);
- });
- return rootlessEnabled;
-}
-
-bool isProtectedBySIP(const std::string& path)
-{
- if ( !sipIsEnabled() )
- return false;
-
- return (rootless_check_trusted(path.c_str()) == 0);
-}
-
-bool isProtectedBySIPExceptDyld(const std::string& path)
-{
- if ( !sipIsEnabled() )
- return false;
-
- return (rootless_check_trusted_class(path.c_str(), "dyld") == 0);
-}
-
-bool isProtectedBySIP(int fd)
-{
- if ( !sipIsEnabled() )
- return false;
-
-#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 101200
- return (rootless_check_trusted_fd(fd) == 0);
-#else
- // fallback to using rootless_check_trusted
- char realPath[MAXPATHLEN];
- if ( fcntl(fd, F_GETPATH, realPath) == 0 )
- return (rootless_check_trusted(realPath) == 0);
- return false;
-#endif
}
bool fileExists(const std::string& path)