diff options
Diffstat (limited to 'src/Driver/Fuse')
-rw-r--r-- | src/Driver/Fuse/Driver.make | 2 | ||||
-rw-r--r-- | src/Driver/Fuse/FuseService.cpp | 31 | ||||
-rw-r--r-- | src/Driver/Fuse/FuseService.h | 2 |
3 files changed, 24 insertions, 11 deletions
diff --git a/src/Driver/Fuse/Driver.make b/src/Driver/Fuse/Driver.make index f58785b9..b3640115 100644 --- a/src/Driver/Fuse/Driver.make +++ b/src/Driver/Fuse/Driver.make @@ -15,6 +15,6 @@ NAME := Driver OBJS := OBJS += FuseService.o -CXXFLAGS += $(shell pkg-config fuse --cflags) +CXXFLAGS += $(shell $(PKG_CONFIG) fuse --cflags) include $(BUILD_INC)/Makefile.inc diff --git a/src/Driver/Fuse/FuseService.cpp b/src/Driver/Fuse/FuseService.cpp index 026883d1..5b12ba4d 100644 --- a/src/Driver/Fuse/FuseService.cpp +++ b/src/Driver/Fuse/FuseService.cpp @@ -10,7 +10,12 @@ code distribution packages. */ +#ifdef TC_OPENBSD +#define FUSE_USE_VERSION 26 +#else #define FUSE_USE_VERSION 25 +#endif + #include <errno.h> #include <fcntl.h> #include <fuse.h> @@ -51,7 +56,11 @@ namespace VeraCrypt return 0; } +#ifdef TC_OPENBSD + static void *fuse_service_init (struct fuse_conn_info *) +#else static void *fuse_service_init () +#endif { try { @@ -214,14 +223,14 @@ namespace VeraCrypt SecureBuffer alignedBuffer (alignedSize); FuseService::ReadVolumeSectors (alignedBuffer, alignedOffset); - BufferPtr ((byte *) buf, size).CopyFrom (alignedBuffer.GetRange (offset % sectorSize, size)); + BufferPtr ((uint8 *) buf, size).CopyFrom (alignedBuffer.GetRange (offset % sectorSize, size)); } else { - FuseService::ReadVolumeSectors (BufferPtr ((byte *) buf, size), offset); + FuseService::ReadVolumeSectors (BufferPtr ((uint8 *) buf, size), offset); } } - catch (MissingVolumeData) + catch (MissingVolumeData&) { return 0; } @@ -232,7 +241,7 @@ namespace VeraCrypt if (strcmp (path, FuseService::GetControlPath()) == 0) { shared_ptr <Buffer> infoBuf = FuseService::GetVolumeInfo(); - BufferPtr outBuf ((byte *)buf, size); + BufferPtr outBuf ((uint8 *)buf, size); if (offset >= (off_t) infoBuf->Size()) return 0; @@ -284,7 +293,7 @@ namespace VeraCrypt if (strcmp (path, FuseService::GetVolumeImagePath()) == 0) { - FuseService::WriteVolumeSectors (BufferPtr ((byte *) buf, size), offset); + FuseService::WriteVolumeSectors (BufferPtr ((uint8 *) buf, size), offset); return size; } @@ -293,7 +302,7 @@ namespace VeraCrypt if (FuseService::AuxDeviceInfoReceived()) return -EACCES; - FuseService::ReceiveAuxDeviceInfo (ConstBufferPtr ((const byte *)buf, size)); + FuseService::ReceiveAuxDeviceInfo (ConstBufferPtr ((const uint8 *)buf, size)); return size; } } @@ -350,7 +359,7 @@ namespace VeraCrypt { throw; } - catch (std::bad_alloc) + catch (std::bad_alloc&) { return -ENOMEM; } @@ -575,7 +584,7 @@ namespace VeraCrypt sigaction (SIGTERM, &action, nullptr); // Wait for the exit of the main service - byte buf[1]; + uint8 buf[1]; if (read (SignalHandlerPipe->GetReadFD(), buf, sizeof (buf))) { } // Errors ignored _exit (0); @@ -583,7 +592,11 @@ namespace VeraCrypt SignalHandlerPipe->GetWriteFD(); +#ifdef TC_OPENBSD + _exit (fuse_main (argc, argv, &fuse_service_oper, NULL)); +#else _exit (fuse_main (argc, argv, &fuse_service_oper)); +#endif } VolumeInfo FuseService::OpenVolumeInfo; @@ -592,5 +605,5 @@ namespace VeraCrypt VolumeSlotNumber FuseService::SlotNumber; uid_t FuseService::UserId; gid_t FuseService::GroupId; - auto_ptr <Pipe> FuseService::SignalHandlerPipe; + unique_ptr <Pipe> FuseService::SignalHandlerPipe; } diff --git a/src/Driver/Fuse/FuseService.h b/src/Driver/Fuse/FuseService.h index 4b844013..872cb368 100644 --- a/src/Driver/Fuse/FuseService.h +++ b/src/Driver/Fuse/FuseService.h @@ -70,7 +70,7 @@ namespace VeraCrypt static VolumeSlotNumber SlotNumber; static uid_t UserId; static gid_t GroupId; - static auto_ptr <Pipe> SignalHandlerPipe; + static unique_ptr <Pipe> SignalHandlerPipe; }; } |