Commit Graph

1057 Commits

Author SHA1 Message Date
Sebastian Messmer aa4e3c7c08 Fix subprocess for Windows 2018-05-20 19:22:46 -07:00
Sebastian Messmer 2ea77d4c26 Use boost::filesystem::path more portably 2018-05-20 19:22:46 -07:00
Sebastian Messmer dfd6a0414f Fix subprocess for osx 2018-05-20 19:21:59 -07:00
Sebastian Messmer ca68102a50 Prefer repository-cryptopp to system installed one 2018-05-20 19:21:59 -07:00
Sebastian Messmer ccdb091a84 Fix subprocess on osx 2018-05-20 19:21:58 -07:00
Sebastian Messmer d0fb8b8412 Make ThreadSystem work on windows 2018-05-20 19:21:58 -07:00
Sebastian Messmer 736052b0ee Make daemonize() work on windows 2018-05-20 19:21:58 -07:00
Sebastian Messmer f2831c0426 Rewrite subprocess and add test cases for it 2018-05-20 19:21:58 -07:00
Sebastian Messmer 3296ae92f7 Make subprocess work on windows 2018-05-20 19:21:58 -07:00
Sebastian Messmer d7e95606f6 Backtrace library is only needed on linux 2018-05-20 19:21:58 -07:00
Sebastian Messmer e5d8bf82c3 Make DontEchoStdinToStdoutRAII work on windows 2018-05-20 19:21:58 -07:00
Sebastian Messmer eb8682887f Increased scrypt hardness to (N=1048576, r=4, p=8) to make it harder to crack the key while allowing cryfs to take advantage of multicore machines. 2018-05-20 19:21:09 -07:00
Sebastian Messmer fede748ff4 Use cryptopp scrypt instead of vendor/scrypt one 2018-05-20 19:21:09 -07:00
Sebastian Messmer 6dbee297ce Use cryptopp from vendor/ instead of system 2018-05-20 19:20:45 -07:00
0x4D616E75 1a2036749c Remove usage of old behavior from cmake 2.8 policy (#217)
* fix linking of fuse in cryfs-cli, linking of cpp-utils in cryfs tests and remove cmake policy to use behaviors of cmake 2.8 instead of 3.0

* setting link dependencies in cryfs project to public, remove transitive dependencies from cryfs-cli project and cryfs test project

* set gtest and gmock link dependencies from private to public in googletest project
2018-05-20 15:13:49 -07:00
Sebastian Messmer b49435f405 Fix logging for older compilers 2018-05-18 22:29:52 -07:00
Sebastian Messmer b715e18a59 Fix non-windows backtrace implementation 2018-05-18 22:29:41 -07:00
Sebastian Messmer e4d1f44c2a Cleanup CMakeLists.txt 2018-05-18 22:29:04 -07:00
0x4D616E75 5db592bcc2 fix loading of CURL and Backtracing library with CMake (#215)
to build on FreeBSD with default compiler (Clang 4.0)
2018-05-17 09:55:15 -07:00
Sebastian Messmer a686129243 Make cpputils::time::now() work on windows 2018-05-17 06:37:47 -07:00
Sebastian Messmer 9d872ea00c - Fix clash of our ERROR log level with the ERROR macro defined in windows
- Fix definition of log levels so msvc accepts them
2018-05-16 23:03:03 -07:00
Sebastian Messmer 6a37f750f4 Fix c++ standard violation (msvc complains otherwise) 2018-05-16 22:56:50 -07:00
Sebastian Messmer aeb4f8e852 Remove unnecessary file 2018-05-16 22:52:22 -07:00
Sebastian Messmer ec9931e09e - Test showBacktraceOnSigsegv
- Test that failed assertions show a backtrace
2018-05-16 22:42:03 -07:00
Sebastian Messmer 3563f4687d Add testcases for backtrace 2018-05-16 22:31:43 -07:00
Sebastian Messmer 1126d7bd10 - Make get_total_memory work for windows
- Add test cases for it
2018-05-16 22:22:42 -07:00
Sebastian Messmer 61cad69671 - Fix nanoseconds in clock_gettime for Mac
- Hide clock_gettime in favor of cpputils::time::now()
- Add test cases to cpputils::time::now()
2018-05-16 22:18:45 -07:00
Sebastian Messmer 3ccb46c537 Make DontSwapMemoryRAII work on windows 2018-05-16 21:48:27 -07:00
Sebastian Messmer 2888ea6efd - Make homedir work on windows
- add test cases for homedir
2018-05-16 21:34:01 -07:00
Sebastian Messmer c1bb081861 Remove unnecessary includes 2018-05-17 02:56:06 -07:00
Sebastian Messmer efbe606961 Make backtrace work on windows 2018-05-16 19:47:51 -07:00
Sebastian Messmer b97da2c735 Use XDG instead of /home/heinzi/.cryfs to store integrity data 2018-05-01 23:54:30 -07:00
Sebastian Messmer f29e398e51 Rename --no-integrity-checks to --allow-integrity-violations 2018-04-29 13:41:21 -07:00
Sebastian Messmer 2b88a0d051 Fix typo 2018-04-21 22:38:24 -07:00
Sebastian Messmer d7a41089ba Add environment variable to specify local storage directory 2018-04-21 22:04:21 -07:00
Sebastian Messmer b0077e7a81 Don't error when trying to change owner/group of root dir, instead just ignore it 2018-04-18 00:24:41 -07:00
Sebastian Messmer 706ef263c9 Fix error logging 2018-04-15 21:37:06 -07:00
Sebastian Messmer 0f1345e64b Don't error when trying to change root dir timestamp, instead just ignore it 2018-04-04 21:21:21 -07:00
Sebastian Messmer fc71242e25 Fix Travis CI build 2018-02-17 18:54:22 -08:00
Sebastian Messmer 8221e76f3a Fix migration for loading 0.9.x file systems 2018-02-03 21:33:07 -08:00
Sebastian Messmer 4de805ae41 Update filesystem format version 2018-02-03 10:12:26 -08:00
Sebastian Messmer 02976659d0 Merge from develop 2018-02-03 09:56:49 -08:00
Sebastian Messmer a9556425dc Only migrate file system if storage format changed 2018-02-03 09:47:04 -08:00
Sebastian Messmer 652b505eef Add --allow-replaced-filesystem option to disable filesystem id checks 2018-02-03 08:33:59 -08:00
Sebastian Messmer cab495f3ac Fix exit code for when the password is wrong 2018-02-02 06:35:49 -08:00
Sebastian Messmer 58fc26002b Exit codes for integrity errors 2018-02-01 18:09:28 -08:00
Sebastian Messmer f90b7ad778 Merge from develop 2018-02-02 00:21:51 +00:00
Sebastian Messmer 5948f63fc8 When CryFS fails to load a file system, the process stops with a helpful error code, which can be used by GUI tools to show detailed messages. 2018-02-02 00:08:01 +00:00
Sebastian Messmer 5463c14872 Remove --version test case because it doesn't work 2018-02-01 11:24:55 -08:00
Sebastian Messmer 05f3726ec3 Merge from develop 2018-02-01 11:21:26 -08:00
Sebastian Messmer 5fc0b7cae8 Add --version option that shows the CryFS version and exits. 2018-02-01 10:21:47 -08:00
Sebastian Messmer 67afdd4baa Add test cases for --allow-filesystem-upgrade 2018-02-01 09:45:31 -08:00
Sebastian Messmer 8da4f4d362 Add --allow-filesystem-upgrade option which will upgrade old file systems without asking the user. This will be especially helpful for GUI tools. 2018-02-01 02:04:59 -08:00
Sebastian Messmer 7287f1ca4d Fix some tsan warnings 2018-01-15 01:58:48 +00:00
Sebastian Messmer a0fa433f51 Merge from develop 2018-01-12 22:18:36 +00:00
Sebastian Messmer f439bf9d0f Remove c style casts and unaligned memory accesses 2017-12-03 19:01:41 +00:00
Sebastian Messmer d90e27eb11 Fix FakeAuthenticatedCipher test flakyness 2017-12-01 23:55:41 +00:00
Sebastian Messmer cc7b38b3c1 - run-clang-tidy.sh also runs on test cases.
- fix clang-tidy warnings in test cases
2017-12-01 15:01:49 +00:00
Sebastian Messmer 006d8b541a Remove unused either class 2017-12-01 15:01:24 +00:00
Sebastian Messmer e318b4879b Fix CI build 2017-11-05 16:36:11 +00:00
Sebastian Messmer 5fe3cada4c Enable some more clang-tidy checks and fix warnings 2017-10-29 16:35:10 +00:00
Sebastian Messmer e38af1001d Remove unused using statements 2017-10-29 15:47:46 +00:00
Sebastian Messmer 5b0fa8c2f7 Workaround clang-tidy warning on newer clang-tidy versions 2017-10-27 15:29:38 +01:00
Sebastian Messmer 76e7f7da72 Introduce clang-tidy and fix corresponding warnings 2017-10-27 04:02:51 +01:00
Sebastian Messmer 27fba3252e std::malloc has implementation defined behavior for size=0. Handle this correctly. 2017-10-27 03:58:44 +01:00
Sebastian Messmer 8eac0f055f Fix clang-tidy warnings 2017-10-08 18:29:45 +01:00
Sebastian Messmer 8eda3bfcd5 Fix std::move misuse 2017-10-08 13:15:11 +01:00
Sebastian Messmer 180170e250 Fix memory leak reported by asan. Not a bad one since it only happens on program exit when the memory is freed anyhow, but better be clean ;) 2017-10-02 07:56:31 +01:00
Sebastian Messmer d5075ec09e Fix 2017-10-02 04:14:19 +01:00
Sebastian Messmer 3787777967 Optimize std::move use 2017-10-01 09:04:29 +01:00
Sebastian Messmer be8a1efd35 Improve test cases 2017-09-30 22:24:33 +01:00
Sebastian Messmer 85759961ef Don't keep update check connection open after update check is finished 2017-09-30 18:53:03 +01:00
Sebastian Messmer 011c6d26ce Don't pollute users local state dir when running test cases 2017-09-30 09:03:19 +01:00
Sebastian Messmer 7a5b23db13 Remember hashed filesystem key in local state so attacker can't replace it 2017-09-30 08:49:24 +01:00
Gerrit Toehgiono a05e4733ef Fixes compilation on FreeBSD 11.1 (RELEASE branch) (#173)
* get_total_memory.cpp: include types.h before sysctl.h (fixes size_t unknown on FreeBSD

* Include fuse.h also in FreeBSD

* update 'defined'-style (src/spp/fuse/params.h)
2017-09-28 10:18:02 -07:00
Sebastian Messmer 49719e3e66 Use config file instead of dir for basedir metadata 2017-09-28 08:19:30 +01:00
Sebastian Messmer aace4c2f13 Check that filesystem id didn't change since we loaded the basedir the last time 2017-09-28 07:41:08 +01:00
David Steele 18788bc3f8 Patch get_total_memory() for freebsd compatibility (#172) 2017-09-25 13:55:15 -07:00
Sebastian Messmer 26b3b366c9 Use local state file instead of myClientId file 2017-09-23 20:17:05 +01:00
Sebastian Messmer 73aab31ade Make LoopThread noncopyable 2017-09-19 20:16:47 +01:00
Sebastian Messmer 556d9cf452 New default block size: 16KB 2017-09-19 11:20:28 +01:00
Sebastian Messmer 9fdefaa4e0 Remove BlockStoreWithRandomKeys 2017-09-18 20:42:07 +01:00
Sebastian Messmer a6592ae299 Fix clang build broken in last commit 2017-09-17 02:24:36 +01:00
Sebastian Messmer 5458af7c52 Rename blockstore::Key -> blockstore::BlockId 2017-09-17 02:07:27 +01:00
Sebastian Messmer 10e11f67e2 Make blockstore::Key more typesafe 2017-09-17 00:10:53 +01:00
Sebastian Messmer f7c089ba47 Fix clang 5.0 compiler warnings 2017-09-16 17:45:15 +01:00
Sebastian Messmer e4acf4e9a8 Merge from develop 2017-09-16 17:14:51 +01:00
Sebastian Messmer 5299be5dda Wire through the missingBlockIsIntegrityViolation setting 2017-09-16 16:49:33 +01:00
Sebastian Messmer b6ce7c3ae4 Allow disabling integrity checks on command line 2017-09-16 16:18:53 +01:00
Sebastian Messmer 666d24e7b8 Fix no-compatibility mode 2017-09-16 00:52:23 +01:00
Sebastian Messmer f6b6875bb2 Rename VersionCountingBlockStore -> IntegrityBlockStore 2017-09-16 00:18:58 +01:00
Sebastian Messmer 00d098952b Storing block ID is job of VersionCountingBlockStore, not EncryptedBlockStore. 2017-09-16 00:09:15 +01:00
Sebastian Messmer 82587ca185 Workaround bug in gcc 6/7 for building unit tests 2017-09-12 22:12:01 +01:00
Sebastian Messmer 0af7dea095 Fix tests on osx 2017-09-12 00:58:33 +01:00
Sebastian Messmer 0ec081750e Fix test cases 2017-09-11 14:37:06 +01:00
Sebastian Messmer 9516d4facc Further compatibility fixes for GCC 4.8 2017-09-10 14:27:14 +01:00
Sebastian Messmer a584cddb86 Merge branch 'next' of github.com:cryfs/cryfs into next 2017-09-09 14:45:30 +01:00
Sebastian Messmer fe1383b4ff Fix build 2017-09-09 14:44:01 +01:00
Sebastian Messmer 51e9ac39d2 GCC bug workaround 2017-09-09 14:40:34 +01:00
Christoph Gysin d963424630 fix pessimizing move warnings (#170)
This fixes warnings emitted by clang:

src/cpp-utils/data/Data.cpp:37:10:
warning: moving a local object in a return statement prevents copy elision [-Wpessimizing-move]
        return std::move(result);
               ^
src/blockstore/implementations/ondisk/OnDiskBlockStore.cpp:61:17:
warning: moving a temporary object prevents copy elision [-Wpessimizing-move]
        auto result = std::move(OnDiskBlock::CreateOnDisk(_rootdir, key, std::move(data)));
                      ^
src/blobstore/implementations/onblocks/datatreestore/DataTree.cpp:249:10:
warning: moving a local object in a return statement prevents copy elision [-Wpessimizing-move]
        return std::move(chain);
               ^

See also:
http://vmpstr.blogspot.ch/2015/12/redundant-stdmove.html
2017-09-06 17:26:27 +01:00
Mouse 977a381740 Fix compatibility with Crypto++ 6.0 (#169)
* Fix compatibility with Crypto++ 6.0 in a newly-introduced file EncryptedBlockStore2.h

* Convert fix to how it was done in "develop" branch
2017-09-05 21:51:24 +01:00
Sebastian Messmer 7e56c46bb0 CryFS tells the operating system to not swap the encryption key to the disk (note: this is best-effort and cannot be guaranteed. Hibernation, for example, will still write the encryption key to the disk) 2017-09-05 00:43:43 +01:00
Sebastian Messmer 3aa8b74fd9 Fix fsstat on osx 2017-08-31 23:40:25 +01:00
Sebastian Messmer 4da81fdbef Fix build on Mac OS X 2017-08-24 21:28:59 +01:00
Sebastian Messmer fc21b0882a Fix relatime performance 2017-08-24 08:19:16 +01:00
Sebastian Messmer 5fb4098c8b Implement relatime behavior for performance 2017-08-23 20:32:36 +01:00
Sebastian Messmer 679b14a4d8 * Allow mounting using system mount tool and /etc/fstab (e.g. mount -t fuse.cryfs basedir mountdir)
* Pass fuse options directly to cryfs (i.e. 'cryfs basedir mountdir -o allow_other' instead of 'cryfs basedir mountdir -- -o allow_other')
2017-08-23 09:56:03 +01:00
Sebastian Messmer ffc0b5195c - Fix CachingBlockStore2_Specific test cases to actually test CachingBlockStore2
- Remove old CachingBlockStore
2017-08-22 00:03:04 +01:00
Sebastian Messmer 30cec27bd8 Improve remove handling in cache 2017-08-21 23:43:11 +01:00
Sebastian Messmer 9d298bad6c Switch to new caching block store 2017-08-21 23:11:45 +01:00
Sebastian Messmer 509bf6cc26 Fix CachingBlockStore2 and add test case for it 2017-08-21 23:09:43 +01:00
Sebastian Messmer 4add7f3d80 Start implementing new cache 2017-08-21 22:44:35 +01:00
Sebastian Messmer a45c0bf29a Fix merge conflict 2017-08-20 01:12:28 +01:00
Sebastian Messmer ff34049787 Merge branch 'next' into newblockstore 2017-08-19 11:54:01 +01:00
Sebastian Messmer ade23f9b86 Merge branch 'develop' into next 2017-08-19 11:53:22 +01:00
Mouse 7abed14d63 Make compatible with the current Crypto++ master (#163)
* Make compatible with the current Crypto++ master

* Add auto-config and build script. Not important, just a time-saver.

* Address compatibility with Crypto++ 6.0 release, while maintaining compatibility
with the older Crypto++ releases.

* Polish comments in cryptopp_byte.h. Forgot to include it to RandomGeneratorThread - fixed.

* Late at night - forgot to fix the .cpp files that used ::byte...

* Renamed auto-config-and-run script

* Added comments/description, and commented out "make check" that fails anyway

* Changed the include guard to match the rest of the .h files

* Delete build script

* Update ChangeLog.txt

* Update ChangeLog.txt
2017-08-16 03:00:46 +01:00
Sebastian Messmer 4a602ce7a5 Remove old blockstore implementations 2017-07-20 19:32:42 -07:00
Sebastian Messmer 36c29f19cf Fix LowToHighLevelBlock 2017-07-18 16:59:48 -07:00
Sebastian Messmer acf01ec4ff Actually wire up CryDevice to use new block stores 2017-07-18 14:49:51 -07:00
Sebastian Messmer 872c94865c Use using for shorter code 2017-07-13 02:13:13 -05:00
Sebastian Messmer 534968484c Use using for shorter code 2017-07-13 01:33:35 -05:00
Sebastian Messmer fbcab0abcc Move stuff to .cpp files 2017-07-13 01:07:07 -05:00
Sebastian Messmer 428290fda5 Extend BlockStore2 and write a LowToHighLevelBlockStore as wrapper from BlockStore to BlockStore2 2017-07-07 16:18:09 -05:00
Sebastian Messmer 0942275d8c TODOs 2017-07-07 18:09:29 +02:00
Sebastian Messmer d6c27e92c5 Add VersionCountingBlockStore2 to build 2017-07-07 17:35:38 +02:00
Sebastian Messmer 6bdefc56a4 Simplify VersionCountingBlockStore::store() 2017-07-07 17:21:52 +02:00
Sebastian Messmer f22a9b2f0a Merge branch 'next' into newblockstore 2017-07-07 15:48:24 +02:00
Sebastian Messmer ec3bec07ff Assert that unique_ref is always defined and not nullptr 2017-04-10 15:14:02 -07:00
Sebastian Messmer 317088e449 Rename unique_ref::isValid to is_valid to comply with naming scheme of other functions 2017-04-10 14:16:30 -07:00
Sebastian Messmer d8efcbb144 Merge branch 'develop' into next 2017-04-06 01:02:13 +01:00
Sebastian Messmer 3d56b97052 Make unique_ref constructor explicit 2017-04-05 21:02:03 +01:00
Sebastian Messmer 636ed437aa Improve unique_ref tests 2017-04-05 20:48:00 +01:00
Sebastian Messmer ed9f224f19 Further unique_ref improvements 2017-04-03 19:08:41 +01:00
Sebastian Messmer 2fb61e7c71 Further improve unique_ref 2017-04-03 15:43:27 +01:00
Sebastian Messmer 9ada10db4d Improve unique_ref 2017-04-03 14:43:32 +01:00
Sebastian Messmer 590cd92de5 Install man page 2017-03-26 14:08:47 +01:00
Sebastian Messmer dbf54b9563 Add test cases for BlockStore2 and fix existing BlockStore2 implementations 2017-02-21 22:27:46 +00:00
Sebastian Messmer d84e65ad76 Merge from develop 2017-02-18 13:22:43 +00:00
Sebastian Messmer 19bfe97d52 du reports correct space usage 2017-02-18 13:21:54 +00:00
Sebastian Messmer 70bfc47a2f Start implementing new blockstore 2017-02-14 08:16:38 +00:00
Sebastian Messmer 1ec5df98d6 Compile cryfs-stats executable 2017-02-14 08:15:11 +00:00
Sebastian Messmer 5350a14a4a Add stats tool to build 2017-02-11 13:28:34 +00:00
Sebastian Messmer cab1c71cac Merge from develop 2017-02-04 19:18:00 +00:00
Sebastian Messmer 59afd50c28 Fix clang build 2017-02-04 19:17:17 +00:00
Sebastian Messmer 54e0ffce2e Merge branch 'develop' of github.com:cryfs/cryfs into develop 2017-02-04 19:03:32 +00:00
Sebastian Messmer 9a304fc52b Upgrade spdlog to 0.11.0 2017-02-04 19:03:20 +00:00
Sebastian Messmer 596d9d0426 Merge from develop 2017-02-04 14:38:14 +00:00
Sebastian Messmer 7267bb5be4 Fix buid on Mac OS X 2017-02-04 14:21:00 +00:00
Nicolas Schneider ffc2fe8eef print defaults for cipher and blocksize in cli help (#124)
Closes #94.
2017-01-23 00:23:51 +00:00
Sebastian Messmer 92776fe507 Merge branch 'develop' into next 2017-01-22 21:24:46 +00:00
Sebastian Meßmer 013be34150 Remove unneeded method 2017-01-22 19:46:47 +00:00
Sebastian Messmer af24fa5402 Merge branch 'develop' into next 2017-01-22 01:11:36 +00:00
Sebastian Messmer bbdfc5c234 Simplify FsppNodeTest 2017-01-22 01:11:26 +00:00
Sebastian Messmer 42765c6be6 Merge from develop 2017-01-21 20:24:09 +00:00
Sebastian Messmer e37d84a3d6 fspp::Dir, fspp::File and fspp::Symlink don't inherit from fspp::Node anymore. This allows file systems to return a generic fspp::Node instead of a concrete subclass when the operation doesn't need to know what type of node it is. 2017-01-21 19:16:35 +00:00
Sebastian Messmer 8c9cea6413 Fix nullversion recognition in gitversion 2016-12-31 16:22:57 +01:00
Sebastian Messmer 681f415272 Use curl_global_init/curl_global_cleanup for cleaner shutdown of executable 2016-10-26 13:50:20 -07:00
Sebastian Messmer abae027538 Fix compiler error on FreeBSD 2016-10-20 10:35:29 +02:00
Sebastian Messmer fb123f8fd0 Removed fixed TODOs 2016-10-14 12:34:42 +02:00
Sebastian Messmer 9d05b8571c Merge from develop 2016-10-13 18:30:27 +02:00
Sebastian Messmer bd74a5b762 More detailed error reporting if key derivation fails 2016-10-02 11:01:14 +02:00
Sebastian Messmer ce218f264a Silence a static analysis warning 2016-09-25 20:36:35 +02:00
Sebastian Messmer 58d6a454d7 Merge branch 'develop' into next 2016-09-25 11:41:33 +02:00
Sebastian Messmer 6464bfb4b7 Disable update checks in noninteractive mode 2016-09-25 11:40:01 +02:00
Sebastian Messmer e009040264 Merge from develop 2016-09-25 02:53:35 +02:00
Sebastian Messmer 443298844e Fix test cases 2016-09-25 02:50:28 +02:00
Sebastian Messmer b027f8c007 Merge from develop 2016-09-24 20:43:54 +02:00
Sebastian Messmer 1e9fdc9aa7 Refactor noninteractive mode. All yes/no questions are forced to define a default that will be used in noninteractive mode. 2016-09-24 20:28:56 +02:00
Sebastian Messmer 1cf52b307d Fix locking in LockPool 2016-09-24 17:02:23 +02:00
Sebastian Messmer 11a85ed29f Allow building with -DCRYFS_UPDATE_CHECKS=off, which will create an executable with disabled update checks (the alternative to disable them in the environment also still works). 2016-09-24 13:16:26 +02:00
Sebastian Messmer 1c34c88709 Remove warning that CryFS is experimental 2016-09-24 12:33:22 +02:00
Sebastian Messmer 789bfc7527 Fix warning from static analysis tool about std::moving a large CryConfig object 2016-09-24 11:42:57 +02:00
Sebastian Messmer 46a2251e9d Fix potential (although improbable) deadlock 2016-09-24 11:01:22 +02:00
Sebastian Messmer b4a609459b When an exception escalates to main, exit with an error code 2016-09-24 09:52:19 +02:00
Sebastian Messmer a1c3079a68 Catch exceptions from main 2016-09-24 09:51:29 +02:00
Sebastian Messmer e30656797b Add compatibility with Crypto++ 5.6.4 2016-09-24 09:39:37 +02:00
Sebastian Messmer 46183976ee Fix missing virtual destructor and potential integer overflow 2016-09-21 20:07:20 +02:00
Sebastian Meßmer e414f0a20f Switch to LGPL 2016-09-13 19:23:08 +02:00
Sebastian Messmer 32f06f288a Fix tree traversal and add test case for it 2016-09-07 22:25:18 +02:00
Sebastian Messmer 904e3dd7a1 Merge 2016-09-07 22:07:56 +02:00
Sebastian Messmer ea349cf79b Fix traversal bug and add test case for it 2016-09-07 19:02:41 +02:00
Sebastian Messmer 0cbb13ffbe Compatibility with older libcurl versions 2016-08-27 13:23:25 +02:00
Sebastian Messmer b315154f08 Merge from develop 2016-07-23 10:17:42 +02:00
Sebastian Messmer 6360d452fe Make compatible with libcurl >= 7.50 2016-07-23 09:04:50 +02:00
Sebastian Messmer d2cecb4ecc Disable large_read fuse option, since it's not used in new fuse versions anyhow and makes problems when fuse is run in user mode linux. 2016-07-22 20:44:06 +02:00
Sebastian Messmer a4ce49aef4 Fix unique_ref test cases 2016-07-22 14:07:06 +02:00
Sebastian Messmer 64d26c2f6e Fix compiler error on older gcc 2016-07-22 12:58:59 +02:00
Sebastian Messmer f069733650 Fix warning on older gcc versions 2016-07-22 02:57:03 +02:00
Sebastian Messmer e38c0f1e8b Fix isRightBorderNode when growing trees 2016-07-17 10:32:59 +02:00
Sebastian Messmer bbdd8a548b Special case treatment for traversals until exactly the last leaf has to load the last leaf to grow it. Before this commit, we just always loaded the last traversed leaf and checked its size. Now we only do so if it's the right border leaf. This saves us loading some leaves. 2016-07-17 10:16:09 +02:00
Sebastian Messmer b339261924 Merge branch 'next' into lessio 2016-07-16 17:14:07 +02:00
Sebastian Messmer f6141f515b TODOs 2016-07-16 17:08:53 +02:00
Sebastian Messmer dc40d61595 Merge branch 'next' into lessio 2016-07-16 16:47:36 +02:00
Sebastian Messmer e3690e2f6b Add comment 2016-07-16 16:47:27 +02:00
Sebastian Messmer 9c42703c70 Merge branch 'next' into lessio 2016-07-16 16:10:03 +02:00
Sebastian Messmer 143c3b3b4f Use large reads and large write 2016-07-16 16:09:47 +02:00
Sebastian Messmer eab7cb1df4 Implement BlockStore::overwrite(). This is the last step in ensuring that the write() call doen't have to load leaves if they're only overwritten anyhow. 2016-07-16 11:42:06 +02:00
Sebastian Messmer eb792daefc More preparations for not loading blocks in write() calls 2016-07-15 21:06:41 +02:00
Sebastian Messmer d80b95514e Traversal doesn't load leaves, but returns the key. This way, the write() call can (after a future commit) write to full leaves without loading them beforehand. 2016-07-15 20:12:24 +02:00
Sebastian Messmer 582917c1f5 Improve code decreasing tree depth 2016-07-15 16:23:00 +02:00
Sebastian Messmer b1b90b8c3d Further reduce number of nodes loaded when deleting a tree and write test cases for it 2016-07-15 15:42:34 +02:00
Sebastian Messmer c428d5642a Minimize number of Block::write() calls when creating new nodes in a traversal. Also add test cases for it. 2016-07-15 12:48:20 +02:00
Sebastian Messmer d626349802 Finish MockBlockStore to also collect other performance metrics, and implement the standard block store tests for it. 2016-07-15 10:23:09 +02:00
Sebastian Messmer f42e08a5f6 Fix DataTree::key() when called while traversing 2016-07-14 17:56:47 +02:00
Sebastian Messmer 6ff0839e90 Add locking to blob 2016-07-14 16:36:30 +02:00
Sebastian Messmer 457ca52eb3 Add assertions to unique_ref 2016-07-14 16:29:02 +02:00
Sebastian Messmer 7ea08fc2b0 Add test cases for removing nodes 2016-07-14 16:12:51 +02:00
Sebastian Messmer 91bf6c3647 Keep resource destructor in ParallelAccessStore under mutex 2016-07-14 15:10:52 +02:00
Sebastian Messmer 3f04a7411c If tree depth increases, and we already traversed the old tree, don't go into it again to grow its last leaf. 2016-07-14 14:23:15 +02:00
Sebastian Messmer cbe122cb5f Add assertions 2016-07-14 13:23:36 +02:00
Sebastian Messmer 0bb6b320d4 Add asserts 2016-07-14 12:58:42 +02:00
Sebastian Messmer 0dbfdf3e2b When shrinking a tree, LeafTraverser takes care of decreasing tree depth, not DataTree anymore. This way, LeafTraverser is now responsible for increasing and decreasing depth as necessary. 2016-07-14 12:55:54 +02:00
Sebastian Messmer 35a4e42ba5 Small fixes in traversal algorithm 2016-07-14 12:38:25 +02:00
Sebastian Messmer fce81f47ff Simplify code a bit and add assertions 2016-07-14 12:03:15 +02:00
Sebastian Messmer 9e9369b9ed Performance optimization: When removing or shrinking a tree, we don't load/read leaves anymore. Loading inner nodes is enough to get all block IDs and then we can delete the leaves from their IDs without loading them. 2016-07-13 11:27:31 +02:00
Sebastian Messmer 7a68757599 Remove unneeded subtrees when shrinking tree 2016-07-13 07:08:53 +02:00
Sebastian Messmer cf38eb0eb3 Use tree traversal to remove data tree. 2016-07-13 00:29:36 +02:00
Sebastian Messmer 508766d2f2 Fix traversal and add test cases 2016-07-13 00:22:35 +02:00
Sebastian Messmer 845b0b5239 Use LeafTraversor for resizing blobs 2016-07-12 20:36:12 +02:00
Sebastian Messmer a19d79361c If a tree is grown by a traversal, the tree is kept in a balanced state as long as possible during the traversal 2016-07-12 09:57:56 +02:00
Sebastian Messmer 1bf20277e4 Removed unnecessary code 2016-07-12 01:10:27 +02:00
Sebastian Messmer 58f2212043 Don't query size on traversal 2016-07-12 01:09:30 +02:00
Sebastian Messmer 582c9c1a4c Fix traversal 2016-07-12 01:04:33 +02:00
Sebastian Messmer 98b85ea8b6 Started rewriting traversal 2016-07-10 22:57:39 +02:00
Sebastian Messmer 2bc3b641aa Allow Data::FillWithZeroes on rvalue 2016-07-10 22:43:07 +02:00
Sebastian Messmer dde89da556 Improve traverseLeaves 2016-07-10 08:38:02 +02:00
Sebastian Messmer 0d860fa4f0 Speed up block loading/storing by issuing only one read/write syscall to the base file system 2016-07-06 15:35:51 -07:00
Sebastian Messmer 7348f7c64d Add checks to Data::LoadFromFile() and Data::StoreToFile() 2016-07-06 15:28:14 -07:00
Sebastian Messmer e85019e95b Cache value of DataTree.numLeaves(). This should make read()/write() faster. 2016-07-05 23:56:44 -07:00
Sebastian Messmer a242076ecc Performance improvement: Allow more parallelity when getting read()/write() syscalls to the same blob 2016-07-05 23:02:59 -07:00
Sebastian Messmer ff0ba06846 Add mutex to fix race condition 2016-06-29 16:42:43 -07:00
Sebastian Messmer b7b5dfba2a Fix generation of new file systems 2016-06-27 22:31:06 -07:00
Sebastian Messmer 3425760daf Implement migration for old filesystems that don't have parent pointers. 2016-06-27 20:03:44 -07:00
Sebastian Messmer bfb397f44e Tell user to not interrupt migration process 2016-06-27 20:01:02 -07:00
Sebastian Messmer 397de9372f Each blob stores a parent pointer (i.e. the ID of the directory that contains this blob). This stores the directory structure in a conflict-proof way and can be used to resolve such conflicts. 2016-06-27 18:22:13 -07:00
Sebastian Messmer a7f13ad7c1 When creating a file system, the user can choose whether to choose missing blocks as integrity violations. 2016-06-26 23:24:32 -07:00
Sebastian Messmer 2451a8c46f Add --missing-block-is-integrity-violation option. The option doesn't have an effect yet though. 2016-06-26 22:16:44 -07:00
Sebastian Messmer be8dffb24d MyClientId is generated outside of CryDevice to give the CryConfigCreator access to it. 2016-06-26 22:15:52 -07:00
Sebastian Messmer 7b56706c1a Be explicit about types stored in config file 2016-06-26 22:15:52 -07:00
Sebastian Messmer b838046246 Add a 'exclusive client' option to the config file 2016-06-26 22:15:52 -07:00
Sebastian Messmer 514dbcb6c7 ClientId is not loaded/generated inside of KnownBlockVersions, but in CryDevice. This way, CryDevice also has access to the ClientID. This is later needed to recognize whether we're in a single-client or in a multi-client setting. 2016-06-26 22:15:52 -07:00
Sebastian Messmer 1c654305a8 In integrity violations, use individual messages saying which check exactly failed. 2016-06-26 22:15:52 -07:00
Sebastian Messmer f066b45954 VersionCountingBlockStore::forEachBlock() has an integrity check checking that all expected blocks are still existing. 2016-06-26 22:15:52 -07:00
Sebastian Messmer 491b277cee In case of an integrity violation, tell the user how they can reset integrity data. 2016-06-26 22:15:52 -07:00
Sebastian Messmer 839a511c4d When an integrity violation is detected, any further access to the file system is blocked. This ensures that the user notices the integrity violation. 2016-06-26 22:15:52 -07:00
Sebastian Messmer c84a230afd VersionCountingBlockStore is initialized with a flag, saying whether missing blocks are integrity errors. This flag is meant to be activated in a single-client scenario to have this additional integrity check. 2016-06-26 22:15:52 -07:00
Sebastian Messmer e02021ecdc Throw an IntegrityViolationError exception instead of just logging integrity violations. This makes sure the user notices. 2016-06-26 22:15:52 -07:00
Sebastian Messmer d306f4872e Fix merge error 2016-06-26 22:15:52 -07:00
Sebastian Messmer fd5dd2c6e1 New way of handling block deletions: Set last-update-client-id to zero instead of increasing version number. This has the same effect (i.e. invalidates all known block versions) and it additionally allows for checking in a local list whether a block is deleted or not. 2016-06-26 22:15:52 -07:00
Sebastian Messmer ee1f0f4d3a Warn in migration that it might take a while 2016-06-26 22:15:52 -07:00
Sebastian Messmer 86c2144a37 Implement migration from file systems without version numbers 2016-06-26 22:15:52 -07:00
Sebastian Messmer f9a10eea4d Fix VersionCountingBlock::resize() 2016-06-26 22:15:52 -07:00
Sebastian Messmer 473e9cc8bb Fix compiler errors 2016-06-26 22:15:52 -07:00
Sebastian Messmer 1a72d3c226 Deleting a block doesn't set the version number to MAX_UINT64, but just increases it by one. This makes sure, that if (in case of a synchronization conflict) the block is reintroduced by another client, this is accepted. 2016-06-26 22:15:52 -07:00
Sebastian Messmer 5534b56ce3 When increasing the version number, don't only look at the version number in the block, but also at the last version number given to it by the current client. Ensure, the new version number is higher than both. 2016-06-26 22:15:52 -07:00
Sebastian Messmer 577c697856 When a client deletes a block, it will never again accept it as a valid block. 2016-06-26 22:15:52 -07:00
Sebastian Messmer 9c1a12c063 Fix merge 2016-06-26 22:15:52 -07:00
Sebastian Messmer e7ac9bec57 Implement BlockStore::forEachBlock 2016-06-26 22:15:52 -07:00
Sebastian Messmer 4d1f7a46b9 * Prevent rollback to the "newest" version of a client when this version was superseded by a version from a different client.
* Use mutex/locks to secure access to KnownBlockVersions
2016-06-26 22:15:52 -07:00
Sebastian Messmer 263c540cd0 Make sure, ClientIdAndBlockKey.h includes all its dependencies 2016-06-26 22:15:52 -07:00
Sebastian Messmer ea3de7360c * Block versions don't have to be globally nondecreasing, but only per client id. This solves potential synchronization conflicts in a multi-client setting.
* Use cpputils::Serializer and cpputils::Deserializer instead of std::ifstream for storing/loading the block version list
2016-06-26 22:15:52 -07:00
Sebastian Messmer de692c1ee4 Store number of entries at beginning of integrity file, so loading can be faster using unordered_map::reserve() 2016-06-26 22:15:52 -07:00
Sebastian Messmer adb10343d2 Only hash key once if key not found, i.e. use [] instead of find() and then emplace() 2016-06-26 22:15:52 -07:00
Sebastian Messmer 389273a24f Test cases use a fake home directory for their configuration, so they don't clutter the actual home directory. 2016-06-26 22:15:52 -07:00
Sebastian Messmer 9da30e3c17 Remove redundant nullbyte 2016-06-26 22:15:52 -07:00
Sebastian Messmer 57af168cfd Store own client id into the block next to the version number. This will be used to fix synchronization conflicts where the version number on one clients progresses slower than on another client, but synchronizes later. 2016-06-26 22:15:52 -07:00
Sebastian Messmer a5391a854d Use VersionCountingBlockStore 2016-06-26 22:15:52 -07:00
Sebastian Messmer 13411c4e59 Integrity data from KnownBlockVersions is persisted to a file 2016-06-26 22:15:52 -07:00
Sebastian Messmer d7f547dd47 Implement a VersionCountingBlockStore that checks that version numbers are nondecreasing. Currently, the block store is not used yet and the state is not stored over different runs of CryFS. This comes with future commits. 2016-06-26 22:15:52 -07:00
Sebastian Messmer f4a7878e37 Compatibility with GCC 6 2016-06-26 21:26:08 -07:00
Sebastian Messmer 0a61987594 Be explicit about types stored in config file 2016-06-26 15:34:53 -07:00
Sebastian Messmer f6a80a4651 Remove default config values for mandatory values 2016-06-26 15:26:05 -07:00
Sebastian Messmer acedbbd0c4 Fix EncryptedBlock::resize() and add test cases for it 2016-06-23 21:20:36 -07:00
Sebastian Messmer fcbca9ddea Improve performance of InMemoryBlockStore and FakeBlockStore by using std::unordered_map instead of std::map and the direct representation of a block Key as Key instead of a string representation. 2016-06-23 12:26:47 -07:00
Sebastian Messmer 3db931c54d Fix mount information reported to operating system 2016-06-22 17:57:00 -07:00
Sebastian Messmer e4501d51e5 Each file system gets a unique ID. This ID will later be used to store local configuration of a client for that file system. 2016-06-20 16:14:07 -07:00
Sebastian Messmer b3c5d4b5e3 Refactor TimestampTestUtils 2016-06-09 17:47:29 -07:00
Sebastian Messmer c5ccd9c2d1 Set cache entry to dirty when timestamps are changed. Otherwise, it wouldn't be written back. 2016-06-09 17:32:35 -07:00
Sebastian Messmer e8ad454e47 TODOs 2016-06-08 12:35:56 -07:00
Sebastian Messmer e2ec72edde Remove unused function 2016-06-08 12:29:28 -07:00
Sebastian Messmer 5aff394a16 Directory timestamps are updated correctly. Also added test cases for this. 2016-06-08 12:21:57 -07:00
Sebastian Messmer 5a5037c992 Symlinks update atime correctly. Also added a test case for this. 2016-06-07 21:47:23 -07:00
Sebastian Messmer 69f4c7976e File::truncate() updates timestamps correctly. Also added test cases for this. 2016-06-07 21:30:57 -07:00
Sebastian Messmer 6448110975 OpenFile updates timestamps correctly, i.e. on read(), write() and truncate(). Also added test cases for it. 2016-06-07 21:25:02 -07:00
Sebastian Messmer 06a5faf2f8 Generalize timestamp expectations 2016-06-07 20:48:29 -07:00
Sebastian Messmer 9bb2e2e89a Implement fsync() and fdatasync() syscalls for flushing open files 2016-06-07 18:36:59 -07:00
Sebastian Messmer be31d78349 Make TimestampTestUtils generic 2016-06-07 13:07:22 -07:00
Sebastian Messmer 93f34a4557 Run FsppDeviceTest_Timestamps on all kinds of nodes, not just files 2016-06-07 12:48:21 -07:00
Sebastian Messmer 8bf8081464 Fix sigsev on startup which was introduced by commit 1bb38f39b4 2016-06-07 12:44:35 -07:00
Sebastian Messmer 2642507344 Allow loading file systems from future cryfs versions if user specifically asks for it 2016-06-06 15:31:09 -07:00
Sebastian Messmer 7708287fdd Add test case that loading a node doesn't modify time stamps 2016-06-06 15:20:41 -07:00
Sebastian Messmer 1bb38f39b4 * Fix FuseTest
* Refactor Fuse: shorter functions, and factor out common functionality of adding a fuse option into own method
2016-06-04 00:45:49 -07:00
Sebastian Messmer 93927e76d6 TODOs 2016-06-02 20:25:14 -07:00
Sebastian Meßmer 3894157589 Merge pull request #61 from mhogomchungu/develop
remove compiler warnings
2016-06-02 20:21:54 -07:00
Sebastian Messmer 1402f54fec Factor out platform inconsistency between Mac and Linux (stat.st_atim vs stat.st_atimespec) 2016-06-02 20:08:51 -07:00
Francis Banyikwa f2b7aac76a use boost::optional for an optional argument in Fuse class 2016-06-02 21:58:04 +03:00
Francis Banyikwa 92d8f939ac move setting of fuse options to Fuse class 2016-06-02 12:51:44 +03:00
Francis Banyikwa 183d6a9d06 dont hard code "cryfs" name in the fspp library 2016-06-02 11:17:55 +03:00
Francis Banyikwa c5a6f16cd5 use a macro to silence compiler warnings 2016-06-02 09:54:39 +03:00
Francis Banyikwa 002dc6ca17 solve issue number 24 2016-06-01 13:37:44 +03:00