diff --git a/src/config/CryCipher.h b/src/config/CryCipher.h index 791de072..d4349224 100644 --- a/src/config/CryCipher.h +++ b/src/config/CryCipher.h @@ -11,6 +11,8 @@ namespace cryfs { class CryCipher { public: + virtual ~CryCipher() {} + virtual const std::string &cipherName() const = 0; virtual const boost::optional &warning() const = 0; virtual cpputils::unique_ref createEncryptedBlockstore(cpputils::unique_ref baseBlockStore, const std::string &encKey) const = 0; diff --git a/src/config/CryConfig.cpp b/src/config/CryConfig.cpp index e69d7bd4..bc1c2b44 100644 --- a/src/config/CryConfig.cpp +++ b/src/config/CryConfig.cpp @@ -12,7 +12,7 @@ using std::string; namespace cryfs { CryConfig::CryConfig(const bf::path &configfile) -:_configfile(configfile), _rootBlob(""), _encKey("") { +:_configfile(configfile), _rootBlob(""), _encKey(""), _cipher("") { if (bf::exists(_configfile)) { load(); } diff --git a/src/filesystem/cachingfsblobstore/CachingFsBlobStore.cpp b/src/filesystem/cachingfsblobstore/CachingFsBlobStore.cpp index 43c39068..d3f9f68a 100644 --- a/src/filesystem/cachingfsblobstore/CachingFsBlobStore.cpp +++ b/src/filesystem/cachingfsblobstore/CachingFsBlobStore.cpp @@ -20,7 +20,7 @@ namespace cryfs { namespace cachingfsblobstore { CachingFsBlobStore::CachingFsBlobStore(unique_ref baseBlobStore) - : _baseBlobStore(std::move(baseBlobStore)) { + : _baseBlobStore(std::move(baseBlobStore)), _cache() { } CachingFsBlobStore::~CachingFsBlobStore() { diff --git a/src/filesystem/cachingfsblobstore/DirBlobRef.h b/src/filesystem/cachingfsblobstore/DirBlobRef.h index fe5d8504..8b84af78 100644 --- a/src/filesystem/cachingfsblobstore/DirBlobRef.h +++ b/src/filesystem/cachingfsblobstore/DirBlobRef.h @@ -80,7 +80,10 @@ public: } private: + fsblobstore::DirBlob *_base; + + DISALLOW_COPY_AND_ASSIGN(DirBlobRef); }; } diff --git a/src/filesystem/cachingfsblobstore/FileBlobRef.h b/src/filesystem/cachingfsblobstore/FileBlobRef.h index b9babec7..d67ecd7a 100644 --- a/src/filesystem/cachingfsblobstore/FileBlobRef.h +++ b/src/filesystem/cachingfsblobstore/FileBlobRef.h @@ -45,7 +45,10 @@ public: } private: + fsblobstore::FileBlob *_base; + + DISALLOW_COPY_AND_ASSIGN(FileBlobRef); }; } diff --git a/src/filesystem/cachingfsblobstore/SymlinkBlobRef.h b/src/filesystem/cachingfsblobstore/SymlinkBlobRef.h index d15924e1..cea4c0c7 100644 --- a/src/filesystem/cachingfsblobstore/SymlinkBlobRef.h +++ b/src/filesystem/cachingfsblobstore/SymlinkBlobRef.h @@ -29,7 +29,10 @@ public: } private: + fsblobstore::SymlinkBlob *_base; + + DISALLOW_COPY_AND_ASSIGN(SymlinkBlobRef); }; } diff --git a/src/filesystem/fsblobstore/DirBlob.cpp b/src/filesystem/fsblobstore/DirBlob.cpp index afb37ae2..bd242b02 100644 --- a/src/filesystem/fsblobstore/DirBlob.cpp +++ b/src/filesystem/fsblobstore/DirBlob.cpp @@ -27,7 +27,7 @@ namespace cryfs { namespace fsblobstore { DirBlob::DirBlob(unique_ref blob, std::function getLstatSize) : - FsBlob(std::move(blob)), _getLstatSize(getLstatSize), _entries(), _changed(false) { + FsBlob(std::move(blob)), _getLstatSize(getLstatSize), _entries(), _mutex(), _changed(false) { ASSERT(magicNumber() == MagicNumbers::DIR, "Loaded blob is not a directory"); _readEntriesFromBlob(); } diff --git a/src/filesystem/parallelaccessfsblobstore/DirBlobRef.h b/src/filesystem/parallelaccessfsblobstore/DirBlobRef.h index 6b33192e..27c9cf97 100644 --- a/src/filesystem/parallelaccessfsblobstore/DirBlobRef.h +++ b/src/filesystem/parallelaccessfsblobstore/DirBlobRef.h @@ -73,6 +73,8 @@ public: private: cachingfsblobstore::DirBlobRef *_base; + + DISALLOW_COPY_AND_ASSIGN(DirBlobRef); }; } diff --git a/src/filesystem/parallelaccessfsblobstore/FileBlobRef.h b/src/filesystem/parallelaccessfsblobstore/FileBlobRef.h index 12321e04..a60469ac 100644 --- a/src/filesystem/parallelaccessfsblobstore/FileBlobRef.h +++ b/src/filesystem/parallelaccessfsblobstore/FileBlobRef.h @@ -42,6 +42,8 @@ public: private: cachingfsblobstore::FileBlobRef *_base; + + DISALLOW_COPY_AND_ASSIGN(FileBlobRef); }; } diff --git a/src/filesystem/parallelaccessfsblobstore/SymlinkBlobRef.h b/src/filesystem/parallelaccessfsblobstore/SymlinkBlobRef.h index 2060a7b7..6eb5d362 100644 --- a/src/filesystem/parallelaccessfsblobstore/SymlinkBlobRef.h +++ b/src/filesystem/parallelaccessfsblobstore/SymlinkBlobRef.h @@ -26,6 +26,8 @@ public: private: cachingfsblobstore::SymlinkBlobRef *_base; + + DISALLOW_COPY_AND_ASSIGN(SymlinkBlobRef); }; } diff --git a/src/program_options/ProgramOptions.cpp b/src/program_options/ProgramOptions.cpp index 9f1f253e..7289d5dc 100644 --- a/src/program_options/ProgramOptions.cpp +++ b/src/program_options/ProgramOptions.cpp @@ -17,8 +17,17 @@ ProgramOptions::ProgramOptions(const string &baseDir, const string &mountDir, co _fuseOptions.insert(_fuseOptions.begin()+1, _mountDir); } +ProgramOptions::ProgramOptions(ProgramOptions &&rhs) + :_baseDir(std::move(rhs._baseDir)), _mountDir(std::move(rhs._mountDir)), _configFile(std::move(rhs._configFile)), + _foreground(std::move(rhs._foreground)), _logFile(std::move(rhs._logFile)), + _fuseOptions(std::move(rhs._fuseOptions)) { + rhs._mountDir = nullptr; +} + ProgramOptions::~ProgramOptions() { - delete[] _mountDir; + if (_mountDir != nullptr) { + delete[] _mountDir; + } } const string &ProgramOptions::baseDir() const { diff --git a/src/program_options/ProgramOptions.h b/src/program_options/ProgramOptions.h index 57372279..5704c3f8 100644 --- a/src/program_options/ProgramOptions.h +++ b/src/program_options/ProgramOptions.h @@ -5,6 +5,7 @@ #include #include #include +#include namespace cryfs { namespace program_options { @@ -13,6 +14,7 @@ namespace cryfs { ProgramOptions(const std::string &baseDir, const std::string &mountDir, const std::string &configFile, bool foreground, const boost::optional &logFile, const std::vector &fuseOptions); + ProgramOptions(ProgramOptions &&rhs); ~ProgramOptions(); const std::string &baseDir() const; @@ -29,6 +31,8 @@ namespace cryfs { bool _foreground; boost::optional _logFile; std::vector _fuseOptions; + + DISALLOW_COPY_AND_ASSIGN(ProgramOptions); }; } }