summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2016-08-09fusefrontend: use NsecToTimespec() for UtimensJakob Unterwurzacher
This fixes a build problem on 32-bit hosts: internal/fusefrontend/file.go:400: cannot use a.Unix() (type int64) as type int32 in assignment internal/fusefrontend/file.go:406: cannot use m.Unix() (type int64) as type int32 in assignment It also enables full nanosecond timestamps for dates after 1970.
2016-08-09tests: add TestUtimesNanoJakob Unterwurzacher
Make sure setting nanoseconds works by path and fd.
2016-07-31cryptocore: comment why 96-bit IVs are still supportedJakob Unterwurzacher
2016-07-21Drop obsolete .drone.ymlJakob Unterwurzacher
Drone CI may make sense in the future when I set up a private instance that supports FUSE, but for now it provides no advantages to Travis CI.
2016-07-17Update README for v1.0v1.0Jakob Unterwurzacher
2016-07-16tests: add RSS tracking to extractloopJakob Unterwurzacher
This obsoletes loopback-mem.bash.
2016-07-16tests: factor out fs-agnostic benchmark scriptJakob Unterwurzacher
"canonical-benchmarks.bash TESTDIR" can now be used on any filesystem.
2016-07-16tests: add maxlen.bash helperJakob Unterwurzacher
Simple script that finds out the maximum supported filename length.
2016-07-14tests: add loopback-mem scriptJakob Unterwurzacher
Helps to find memory leaks in go-fuse's loopback, which gocryptfs builds upon.
2016-07-12tests: extractloop: add loopback supportJakob Unterwurzacher
loopback is an example app that comes with the go-fuse lib. It uses all the same APIs as gocryptfs, minus the encryption.
2016-07-11tests: add encfs support to benchmark.bash and extractloop.bashJakob Unterwurzacher
Pass "-encfs" to test encfs instead of gocryptfs.
2016-07-11tests: matrix: print name in verbose outputJakob Unterwurzacher
2016-07-11tests: add verbose output when unmountingJakob Unterwurzacher
2016-07-11tests: use unmount wrapper in ResetTmpDirJakob Unterwurzacher
This should make it work on OSX. Also, split unmount into two functions. Depending on what you want, * UnmountErr returns the resulting error * UnmountPanic panics if the error was not nil
2016-07-10README: Fix ticket #15 copy-paste errorsrfjakob
Thanks to @spaghetti2514 for noticing.
2016-07-06Add godoc comments to all internal packagesJakob Unterwurzacher
2016-07-06README: update for 1.0-rc1v1.0-rc1Jakob Unterwurzacher
2016-07-06tests: fix shadow warningJakob Unterwurzacher
"go tool vet -shadow=true" complained about the md5 package being shadowed by variables called "md5". Fix by using the Md5hex helper and dropping the md5 import.
2016-07-04tests: OSX: cast st.Blksize to int64Jakob Unterwurzacher
On Linux, Blksize is already int64. But on OSX it is int32 and that caused a compile failure. https://github.com/rfjakob/gocryptfs/issues/15
2016-07-04prefer_openssl: OSX: get rid of /proc warningsJakob Unterwurzacher
OSX does not have /proc/cpuinfo, but let's not warn the user about it.
2016-07-04stupidgcm: use __builtin_trap()Jakob Unterwurzacher
[...]/stupidgcm/locking.go:16:2: warning: indirection of non-volatile null pointer will be deleted, not trap [-Wnull-dereference] [...]/stupidgcm/locking.go:16:2: note: consider using __builtin_trap() or qualifying pointer with 'volatile' https://github.com/rfjakob/gocryptfs/issues/15
2016-07-03XFSTESTS.md: add output from latest fuse-xfstestsJakob Unterwurzacher
fuse-xfstests is regularily rebased to xfstests master.
2016-07-03syscallcompat: OSX: add Mknodat wrapperJakob Unterwurzacher
Protip: find naked *at syscalls using: git grep "syscall." | grep "at(" | grep -v syscallcompat
2016-07-03syscallcompat: OSX: add Unlinkat wrapperJakob Unterwurzacher
Also, replace remaining naked syscall.Openat calls.
2016-07-03fusefrontend: downgrade Renameat log message to debugJakob Unterwurzacher
2016-07-03syscallcompat: OSX: add Renamat wrapperJakob Unterwurzacher
Adds a poor man's renameat implementation for OSX.
2016-07-03syscallcompat: OSX: add Fallocate and Openat wrappersJakob Unterwurzacher
...and convert all calls to syscall.{Fallocate,Openat} to syscallcompat . Both syscalls are not available on OSX. We emulate Openat and just return EOPNOTSUPP for Fallocate.
2016-07-03syscallcompat: move syscall wrapper to their own packageJakob Unterwurzacher
We will get more of them as OSX also lacks support for openat.
2016-07-03main: bake build date into version stringJakob Unterwurzacher
$ gocryptfs -version gocryptfs v0.12-36-ge021b9d-dirty; go-fuse a4c968c; 2016-07-03 go1.6.2
2016-07-03main: yellow text for masterkey and zerokey warningsJakob Unterwurzacher
Also, mention that the shell may save the command line into the history and reduce "ps -auxwww" to "ps ax" (that's all you need).
2016-07-03nametransform: hide detailed padding error behind the debug flagJakob Unterwurzacher
unPad16 returns detailed errors including the position of the incorrect bytes. Kill a possible padding oracle by lumping everything into a generic error. The detailed error is only logged if debug is active.
2016-07-02tests: call umount instead of fusermount on OSXJakob Unterwurzacher
Reported at https://github.com/rfjakob/gocryptfs/issues/15
2016-07-02fusefrontend: add fallocate supportJakob Unterwurzacher
Mode=0 (default) and mode=1 (keep size) are supported. The patch includes test cases and the whole thing passed xfstests. Fixes https://github.com/rfjakob/gocryptfs/issues/1 .
2016-07-02fusefronted: move Truncate() and Allocate() to their own fileJakob Unterwurzacher
These are large complicated implementations that will share some code.
2016-07-02contentenc: rename PlaintextRange and CiphertextRangeJakob Unterwurzacher
The name could be misunderstood and actually caused a bug: doWrite used to always preallocate 4128 instead of the actual data length.
2016-07-01fusefrontend: coalesce grows in Truncate()Jakob Unterwurzacher
We were growing the file block-by-block which was pretty inefficient. We now coalesce all the grows into a single Ftruncate. Also simplifies the code! Simplistic benchmark: Before: $ time truncate -s 1000M foo real 0m0.568s After: $ time truncate -s 1000M foo real 0m0.205s
2016-07-01fusefrontend: better comments for TruncateJakob Unterwurzacher
2016-06-30fusefrontend: handle dir-overwrites-dir on XFSJakob Unterwurzacher
XFS returns a different error code if you try to overwrite a non-empty directory with a directory: XFS: mv: cannot move ‘foo’ to ‘bar/foo’: File exists ext4: mv: cannot move 'foo' to 'bar/foo': Directory not empty So have EEXIST trigger the Rmdir logic as well. Fixes issue #20 Link: https://github.com/rfjakob/gocryptfs/issues/20
2016-06-30test: split up integration_testsJakob Unterwurzacher
...into "matrix" and "normal". Also: * Make running multiple packages in parallel safe, see http://stackoverflow.com/questions/23715302/go-how-to-run-tests-for-multiple-packages * Don't depent on test_helper.TmpDir and friends to have a terminating slash
2016-06-29build.bash: support colon-separated GOPATH variableJakob Unterwurzacher
Fixes issue #31 https://github.com/rfjakob/gocryptfs/issues/31
2016-06-27tests: run example_filesystems with "-openssl=false" AND "=true"Jakob Unterwurzacher
Run the tests twice, once with openssl and once with Go crypto.
2016-06-27tests: give "-plaintextnames" its own test packageJakob Unterwurzacher
...and add tests for checking that gocryptfs.diriv does not get created. The main "integration_tests" package has become quite big and convoluted over time. This small separate package should make writing tests for "-plaintextnames" easier. As seen in "fusefrontend: fix PlaintextNames versions of Mkdir, Rmdir", we need more of them.
2016-06-27tlog: clean up messages from the go-fuse libraryJakob Unterwurzacher
Drop the date and add the "go-fuse: " prefix so you can see where the message is coming from. Before: Jun 27 09:03:15 brikett gocryptfs[4150]: 2016/06/27 09:03:15 Unimplemented opcode INTERRUPT After: Jun 27 09:10:58 brikett gocryptfs[4961]: go-fuse: Unimplemented opcode INTERRUPT
2016-06-27fusefrontend: fix PlaintextNames versions of Mkdir, RmdirJakob Unterwurzacher
The "!fs.args.DirIV" special case was removed by b17f0465c7 but that, by accident, also removed the handling for PlaintextNames. Re-add it as an explicit PlaintextNames special case. Also adds support for removing directories that miss their gocryptfs.diriv file for some reason.
2016-06-26tlog: switch default logger to syslogJakob Unterwurzacher
...unless "-nosyslog" is passed. All gocryptfs messages already go to syslog, but the messages that the go-fuse lib emits were still printed to stdout. Fixes issue #13 ( https://github.com/rfjakob/gocryptfs/issues/13 )
2016-06-26MANPAGE: note that "-plaintextnames" disables symlink encryptionJakob Unterwurzacher
This is no change in behavoir, just a clarification in the man page.
2016-06-26main: add "-o" option to enable "suid" and "dev"Jakob Unterwurzacher
Device files and suid binaries are often not needed when running gocryptfs as root. As they are potentially dangerous, let the user enable them explicitely via the new "-o" option instead of always enabling them when running as root.
2016-06-26main, fusefrontend: enable suid functionalityJakob Unterwurzacher
FUSE filesystems are mounted with "nosuid" by default. If we run as root, we can use device files by passing the opposite mount option, "suid". Also we have to use syscall.Chmod instead of os.Chmod because the portability translation layer "syscallMode" messes up the sgid and suid bits. Fixes 70% of the failures in xfstests generic/193. The remaining are related to truncate, but we err on the safe side: $ diff -u tests/generic/193.out /home/jakob/src/fuse-xfstests/results//generic/193.out.bad [...] check that suid/sgid bits are cleared after successful truncate... with no exec perm before: -rwSr-Sr-- -after: -rw-r-Sr-- +after: -rw-r--r--
2016-06-26main: enable device files when running as rootJakob Unterwurzacher
FUSE filesystems are mounted with "nodev" by default. If we run as root, we can use device files by passing the opposite mount option, "dev". Fixes xfstests generic/184.
2016-06-26fusefronted: preserve owner if running as rootJakob Unterwurzacher
If allow_other is set and we run as root, try to give newly created files to the right user.