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
|
2284571127
|
Add test cases to KnownBlockVersionsTest
|
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
|
32001d0af3
|
Write another integrity test case
|
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
|
da6390646e
|
Add test cases for command line parser when options are not given.
|
2016-06-26 22:15:43 -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
|
9358c10adf
|
Finish test cases for Block::resize()
|
2016-06-23 21:30:09 -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
|
da187e3142
|
Merge branch 'develop' of github.com:cryfs/cryfs into develop
|
2016-06-08 12:35:58 -07:00 |
|
Sebastian Messmer
|
e8ad454e47
|
TODOs
|
2016-06-08 12:35:56 -07:00 |
|
Sebastian Meßmer
|
2852120982
|
Update ChangeLog.txt
|
2016-06-08 12:33:42 -07:00 |
|
Sebastian Messmer
|
e2ec72edde
|
Remove unused function
|
2016-06-08 12:29:28 -07:00 |
|
Sebastian Messmer
|
7489de3381
|
Added timestamp fix to ChangeLog
|
2016-06-08 12:22:17 -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 |
|