diff options
Diffstat (limited to 'adb/daemon/file_sync_service.cpp')
-rw-r--r-- | adb/daemon/file_sync_service.cpp | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/adb/daemon/file_sync_service.cpp b/adb/daemon/file_sync_service.cpp index 11289934e..f7be8f94b 100644 --- a/adb/daemon/file_sync_service.cpp +++ b/adb/daemon/file_sync_service.cpp @@ -69,17 +69,23 @@ static bool update_capabilities(const char* path, uint64_t capabilities) { } static bool secure_mkdirs(const std::string& path) { - uid_t uid = -1; - gid_t gid = -1; - unsigned int mode = 0775; - uint64_t capabilities = 0; - if (path[0] != '/') return false; std::vector<std::string> path_components = android::base::Split(path, "/"); std::string partial_path; for (const auto& path_component : path_components) { - if (partial_path.back() != OS_PATH_SEPARATOR) partial_path += OS_PATH_SEPARATOR; + uid_t uid = -1; + gid_t gid = -1; + unsigned int mode = 0775; + uint64_t capabilities = 0; + + if (path_component.empty()) { + continue; + } + + if (partial_path.empty() || partial_path.back() != OS_PATH_SEPARATOR) { + partial_path += OS_PATH_SEPARATOR; + } partial_path += path_component; if (should_use_fs_config(partial_path)) { |