diff --git a/ChangeLog.txt b/ChangeLog.txt index 53025964..0742a5ca 100644 --- a/ChangeLog.txt +++ b/ChangeLog.txt @@ -1,5 +1,8 @@ Version 0.10.2 (unreleased) --------------- +Fixed bugs: +* Fix occasional crash in mkdir() on Windows + Improvements: * Better logging when local state can't be loaded diff --git a/src/cryfs/filesystem/CryDevice.cpp b/src/cryfs/filesystem/CryDevice.cpp index c09c4a2c..68ebde7f 100644 --- a/src/cryfs/filesystem/CryDevice.cpp +++ b/src/cryfs/filesystem/CryDevice.cpp @@ -179,7 +179,7 @@ optional> CryDevice::LoadSymlink(const bf::path &path) optional> CryDevice::Load(const bf::path &path) { // TODO Is it faster to not let CryFile/CryDir/CryDevice inherit from CryNode and loading CryNode without having to know what it is? // TODO Split into smaller functions - ASSERT(path.has_root_directory() && !path.has_root_name(), "Must be an absolute path (but on windows without device specifier)"); + ASSERT(path.has_root_directory() && !path.has_root_name(), "Must be an absolute path (but on windows without device specifier): " + path.string()); callFsActionCallbacks(); diff --git a/src/fspp/fuse/Fuse.cpp b/src/fspp/fuse/Fuse.cpp index dc454fcc..f3813ba7 100644 --- a/src/fspp/fuse/Fuse.cpp +++ b/src/fspp/fuse/Fuse.cpp @@ -451,6 +451,11 @@ int Fuse::mkdir(const bf::path &path, ::mode_t mode) { #endif try { ASSERT(is_valid_fspp_path(path), "has to be an absolute path"); + // DokanY seems to call mkdir("/"). Ignore that + if ("/" == path) { + return 0; + } + auto context = fuse_get_context(); _fs->mkdir(path, mode, context->uid, context->gid); return 0;