07f1e638ee
Cryptographically secure hashes can be forced to be used in a repository, by setting annex.securehashesonly. This does not prevent the git repository from containing files with insecure hashes, but it does prevent the content of such files from being pulled into .git/annex/objects from another repository. We want to make sure that at no point does git-annex accept content into .git/annex/objects that is hashed with an insecure key. Here's how it was done: * .git/annex/objects/xx/yy/KEY/ is kept frozen, so nothing can be written to it normally * So every place that writes content must call, thawContent or modifyContent. We can audit for these, and be sure we've considered all cases. * The main functions are moveAnnex, and linkToAnnex; these were made to check annex.securehashesonly, and are the main security boundary for annex.securehashesonly. * Most other calls to modifyContent deal with other files in the KEY directory (inode cache etc). The other ones that mess with the content are: - Annex.Direct.toDirectGen, in which content already in the annex directory is moved to the direct mode file, so not relevant. - fix and lock, which don't add new content - Command.ReKey.linkKey, which manually unlocks it to make a copy. * All other calls to thawContent appear safe. Made moveAnnex return a Bool, so checked all callsites and made them deal with a failure in appropriate ways. linkToAnnex simply returns LinkAnnexFailed; all callsites already deal with it failing in appropriate ways. This commit was sponsored by Riku Voipio. |
||
---|---|---|
.. | ||
ActionItem.hs | ||
Availability.hs | ||
Backend.hs | ||
BranchState.hs | ||
CleanupActions.hs | ||
Command.hs | ||
Concurrency.hs | ||
Creds.hs | ||
Crypto.hs | ||
DeferredParse.hs | ||
DesktopNotify.hs | ||
Difference.hs | ||
Distribution.hs | ||
FileMatcher.hs | ||
GitConfig.hs | ||
Group.hs | ||
Key.hs | ||
KeySource.hs | ||
LockCache.hs | ||
Messages.hs | ||
MetaData.hs | ||
NumCopies.hs | ||
RefSpec.hs | ||
Remote.hs | ||
ScheduledActivity.hs | ||
StandardGroups.hs | ||
StoreRetrieve.hs | ||
Test.hs | ||
Transfer.hs | ||
TrustLevel.hs | ||
UrlContents.hs | ||
UUID.hs | ||
View.hs |