| Age | Commit message (Collapse) | Author | 
|---|
|  | xfstests generic/523 discovered that we allowed to set
xattrs with "/" in the name, but did not allow to read
them later.
With this change we do not allow to set them in the first
place. | 
|  | Prep for https://github.com/rfjakob/gocryptfs/issues/539 | 
|  | This adds support for gitignore-like wildcards and exclude patters in
reverse mode. It (somewhat) fixes #273: no regexp support, but the
syntax should be powerful enough to satisfy most needs.
Also, since adding a lot of --exclude options can be tedious, it adds
the --exclude-from option to read patterns from a file (or files). | 
|  | Similar to gocryptfs.iv files they are never modified. | 
|  | Found with the 'codespell' utility. | 
|  |  | 
|  | Pread() needs retry logic, so instead of implementing it ourselves,
use os.File.
Reported by @slackner at
https://github.com/rfjakob/gocryptfs/commit/c09bf1f2284706232642431c75fa1f3d8500a9d0#r31813394 | 
|  | And also rename DeleteLongName() -> DeleteLongNameAt(). The
naming follow the names open the openat() etc syscalls. | 
|  |  | 
|  | DecryptPath is now symlink-safe through the use of *at()
functions. | 
|  |  | 
|  | Directly use int file descriptors for the dirfd
and get rid of one level of indirection. | 
|  |  | 
|  | Fixes https://github.com/rfjakob/gocryptfs/issues/170
Steps to reproduce the problem:
* Create a regular forward mount point
* Create a file with a shortname and one with a long filename
* Try to run 'mv <shortname> <longname>'
This should actually work and replace the existing file, but instead it
fails with:
    mv: cannot move '<shortname>' to '<longname>': File exists
The problem is the creation of the .name file. If the target already exists
we can safely ignore the EEXIST error and just keep the existing .name file. | 
|  | This fixes a few issues I have found reviewing the code:
1) Limit the amount of data ReadLongName() will read. Previously,
you could send gocryptfs into out-of-memory by symlinking
gocryptfs.diriv to /dev/zero.
2) Handle the empty input case in unPad16() by returning an
error. Previously, it would panic with an out-of-bounds array
read. It is unclear to me if this could actually be triggered.
3) Reject empty names after base64-decoding in DecryptName().
An empty name crashes emeCipher.Decrypt().
It is unclear to me if B64.DecodeString() can actually return
a non-error empty result, but let's guard against it anyway. | 
|  | The symlink functions incorrectly hardcoded the padded
base64 variant. | 
|  | HashLongName() incorrectly hardcoded the call to base64.URLEncoding. | 
|  | https://github.com/rfjakob/gocryptfs/issues/64 | 
|  |  | 
|  | The last patch added functionality for generating gocryptfs.longname.*
files, this patch adds support for mapping them back to the full
filenames.
Note that resolving a long name needs a full readdir. A cache
will be implemented later on to improve performance. | 
|  | Also, replace remaining naked syscall.Openat calls. | 
|  | tlog is used heavily everywhere and deserves a shorter name.
Renamed using sed magic, without any manual rework:
   find * -type f -exec sed -i 's/toggledlog/tlog/g' {} + | 
|  | Using dirfd-relative operations allows safe lockless handling
of the ".name" files. | 
|  |  | 
|  |  | 
|  | Todo: Rename, Unlink, Rmdir, Mknod, Mkdir |