summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2019-03-17Add contrib/statfs toolJakob Unterwurzacher
This should help debugging https://github.com/rfjakob/gocryptfs/issues/375 and https://github.com/rfjakob/gocryptfs/issues/274 , as MacOS does not have "stat -f".
2019-03-03tests: fix data race in TestDirIVRaceJakob Unterwurzacher
Ironically, the test for DirIV races had a data race itself by writing to a bool without taking a lock. Found by running "./test.bash -race": WARNING: DATA RACE Write at 0x00c00001dea5 by goroutine 22: github.com/rfjakob/gocryptfs/tests/defaults.TestDirIVRace.func1() /home/jakob/go/src/github.com/rfjakob/gocryptfs/tests/defaults/diriv_test.go:39 +0x38 github.com/rfjakob/gocryptfs/tests/defaults.TestDirIVRace() /home/jakob/go/src/github.com/rfjakob/gocryptfs/tests/defaults/diriv_test.go:73 +0x65c testing.tRunner() /usr/local/go/src/testing/testing.go:865 +0x163 Previous read at 0x00c00001dea5 by goroutine 23: github.com/rfjakob/gocryptfs/tests/defaults.TestDirIVRace.func2() /home/jakob/go/src/github.com/rfjakob/gocryptfs/tests/defaults/diriv_test.go:51 +0x8b Goroutine 22 (running) created at: testing.(*T).Run() /usr/local/go/src/testing/testing.go:916 +0x699 testing.runTests.func1() /usr/local/go/src/testing/testing.go:1157 +0xa8 testing.tRunner() /usr/local/go/src/testing/testing.go:865 +0x163 testing.runTests() /usr/local/go/src/testing/testing.go:1155 +0x523 testing.(*M).Run() /usr/local/go/src/testing/testing.go:1072 +0x2eb github.com/rfjakob/gocryptfs/tests/defaults.TestMain() /home/jakob/go/src/github.com/rfjakob/gocryptfs/tests/defaults/main_test.go:21 +0xe1 main.main() _testmain.go:76 +0x222 Goroutine 23 (running) created at: github.com/rfjakob/gocryptfs/tests/defaults.TestDirIVRace() /home/jakob/go/src/github.com/rfjakob/gocryptfs/tests/defaults/diriv_test.go:43 +0x48d testing.tRunner() /usr/local/go/src/testing/testing.go:865 +0x163 ================== --- FAIL: TestDirIVRace (0.00s) testing.go:809: race detected during execution of test FAIL
2019-03-03Allow multiple -extpass argumentsJakob Unterwurzacher
To support arguments containing spaces, -extpass can now be passed multiple times. https://github.com/rfjakob/gocryptfs/issues/289
2019-03-02Include rendered man page in source tarballsJakob Unterwurzacher
This gives users who build from the source tarball, but do not want to install pandoc, access to the man pages. Apperently the gocryptfs homebrew package ships without the man pages at the moment to avoid pandoc. Requested at https://github.com/rfjakob/gocryptfs/issues/355
2019-03-02Update depsJakob Unterwurzacher
go-fuse now has a v1.0.0. release! https://github.com/hanwen/go-fuse/releases/tag/v1.0.0
2019-03-02Go 1.12 dropped "go tool vet", use "go vet" insteadJakob Unterwurzacher
Also add Go 1.12 to Travis.
2019-02-17tests: fix compile error in matrix_test.goJakob Unterwurzacher
Error was: tests/matrix/matrix_test.go:101:9: no new variables on left side of :=
2019-02-17ParseHeader: print hexdump on errorJakob Unterwurzacher
Should help debugging https://github.com/rfjakob/gocryptfs/issues/363
2019-02-17nametransform: reject names longer than 255 charsJakob Unterwurzacher
Looks like we allowed creating longer names by accident. Fix that, and add a test that verifies it.
2019-02-17test: len2elen.sh: fix first line outputJakob Unterwurzacher
2019-02-17tests: add len2elen.shJakob Unterwurzacher
Check plaintext file name length -> encrypted file name length relation Example output: 0 22 2 22 3 22 4 22 5 22 6 22 7 22 8 22 9 22 10 22 11 22 12 22 13 22 14 22 15 22 16 43 17 43 18 43 19 43 20 43 21 43 22 43 23 43 24 43 25 43 26 43 27 43 28 43 29 43 30 43 31 43 32 64 33 64 34 64 35 64 36 64 37 64 38 64 39 64 40 64 41 64 42 64 43 64 44 64 45 64 46 64 47 64 48 86 49 86 50 86 51 86 52 86 53 86 54 86 55 86 56 86 57 86 58 86 59 86 60 86 61 86 62 86 63 86 64 107 65 107 66 107 67 107 68 107 69 107 70 107 71 107 72 107 73 107 74 107 75 107 76 107 77 107 78 107 79 107 80 128 81 128 82 128 83 128 84 128 85 128 86 128 87 128 88 128 89 128 90 128 91 128 92 128 93 128 94 128 95 128 96 150 97 150 98 150 99 150 100 150 101 150 102 150 103 150 104 150 105 150 106 150 107 150 108 150 109 150 110 150 111 150 112 171 113 171 114 171 115 171 116 171 117 171 118 171 119 171 120 171 121 171 122 171 123 171 124 171 125 171 126 171 127 171 128 192 129 192 130 192 131 192 132 192 133 192 134 192 135 192 136 192 137 192 138 192 139 192 140 192 141 192 142 192 143 192 144 214 145 214 146 214 147 214 148 214 149 214 150 214 151 214 152 214 153 214 154 214 155 214 156 214 157 214 158 214 159 214 160 235 161 235 162 235 163 235 164 235 165 235 166 235 167 235 168 235 169 235 170 235 171 235 172 235 173 235 174 235 175 235 176 67 177 67 178 67 179 67 180 67 181 67 182 67 183 67 184 67 185 67 186 67 187 67 188 67 189 67 190 67 191 67 192 67 193 67 194 67 195 67 196 67 197 67 198 67 199 67 200 67 201 67 202 67 203 67 204 67 205 67 206 67 207 67 208 67 209 67 210 67 211 67 212 67 213 67 214 67 215 67 216 67 217 67 218 67 219 67 220 67 221 67 222 67 223 67 224 67 225 67 226 67 227 67 228 67 229 67 230 67 231 67 232 67 233 67 234 67 235 67 236 67 237 67 238 67 239 67 240 67 241 67 242 67 243 67 244 67 245 67 246 67 247 67 248 67 249 67 250 67 251 67 252 67 253 67 254 67 255 67
2019-02-17tests: parallel_cp.sh: automount fsJakob Unterwurzacher
Teach the script to automatically mount and unmount.
2019-02-15Update dependenciesJakob Unterwurzacher
Fix for https://github.com/rfjakob/gocryptfs/issues/351 was just merged into go-fuse. Closes https://github.com/rfjakob/gocryptfs/issues/351
2019-02-04dep: update dependenciesv1.7-rc2Jakob Unterwurzacher
This also drops now-unused dependencies.
2019-02-04Disable Trezor supportJakob Unterwurzacher
Trezor support has been broken since Sept 2018 ( https://github.com/rfjakob/gocryptfs/issues/261 ). Disable trezor.go by renaming to trezor.go.broken. This keeps "dep" from having to pull in A LOT OF dependencies: Before: $ du -sh vendor/ 49M vendor/ After: $ du -sh vendor/ 16M vendor/
2019-01-23tests: simplify parallel_cp.shJakob Unterwurzacher
Get rid of one extra directory level. Hopefully makes it easier to follow the debug logs.
2019-01-20tests: darwin: ignore error in TestMvWarningSymlinkJakob Unterwurzacher
https://github.com/rfjakob/gocryptfs/issues/349
2019-01-20fusefronted: comment why Access() does not check context.UidJakob Unterwurzacher
https://github.com/rfjakob/gocryptfs/issues/347
2019-01-20tests: check that we can delete directories with all permissionJakob Unterwurzacher
Regression test for https://github.com/rfjakob/gocryptfs/issues/354
2019-01-20fusefrontend: ensure directories without W or X perms can be deletedJakob Unterwurzacher
This fixed the "Permission denied" bug, but still has the problem that the directory may be replaced behind our back. Mitigated by the fact that we skip the workaround when running as root with -allow_other. https://github.com/rfjakob/gocryptfs/issues/354
2019-01-20tests: matrix: split out directory tests into their own fileJakob Unterwurzacher
matrix_test.go is already too big.
2019-01-20Revert "syscallcompat: drop Faccessat AT_SYMLINK_NOFOLLOW helper"Jakob Unterwurzacher
Breaks mounting on MacOS: unix.Faccessat on Darwin does NOT (yet) support AT_SYMLINK_NOFOLLOW. See d44fe89ba4f3252c5bd00c4f7730197732f2a26a . This reverts commit 0805a63df1b5f915b228727f6074c2506922d0ad.
2019-01-20syscallcompat: drop Faccessat AT_SYMLINK_NOFOLLOW helperJakob Unterwurzacher
unix.Faccessat has added support for AT_SYMLINK_NOFOLLOW in July 2018, https://github.com/golang/sys/commit/bd9dbc187b6e1dacfdd2722a87e83093c2d7bd6e#diff-341484dbbe3180cd7a31ef2ad2d679b6 which means we no longer need our own helper. Closes https://github.com/rfjakob/gocryptfs/issues/347
2019-01-20ctlsock: fix buffer truncation of JSON unmarshal errorJakob Unterwurzacher
In the error case, buf was not restored to the original capacity. Instead of truncating "buf" and restoring (or forgetting to restore) later, introduce the "data" slice. Fixes https://github.com/rfjakob/gocryptfs/issues/356
2019-01-16fusefrontend: Always use intFd() method instead of int(f.fd.Fd()).Sebastian Lackner
2019-01-16fusefrontend: Rework the Utimens handling on macOS.Sebastian Lackner
For Linux, everything effectively stays the same. For both path-based and fd-based Utimens() calls, we use unix.UtimesNanoAt(). To avoid introducing a separate syscall wrapper for futimens() (as done in go-fuse, for example), we instead use the /proc/self/fd - trick. On macOS, this changes quite a lot: * Path-based Utimens() calls were previously completely broken, since unix.UtimensNanoAt() ignores the passed file descriptor. Note that this cannot be fixed easily since there IS no appropriate syscall available on macOS prior to High Sierra (10.13). We emulate this case by using Fchdir() + setattrlist(). * Fd-based Utimens() calls were previously translated to f.GetAttr() (to fill any empty parameters) and syscall.Futimes(), which does not does support nanosecond precision. Both issues can be fixed by switching to fsetattrlist(). Fixes https://github.com/rfjakob/gocryptfs/issues/350
2019-01-15tests: Increase timeout in Mount() function.Sebastian Lackner
This avoids sporadic test failures on macOS.
2019-01-15mount: Replace commas in volume name.Sebastian Lackner
Fixes the following test failure: cli_test.go:534: Failed to mount "[...]/542399800,foo,bar" on "[...]/542399800,foo,bar.mnt": exit status 19
2019-01-15fusefrontend: Print 'too many open files' warning for both short and long names.Sebastian Lackner
While we're at it, also replace os.* constants with syscall.* constants.
2019-01-15fusefrontend_reverse: Delete leftover debug statement.Sebastian Lackner
2019-01-14tests: reduce noise on MacOSJakob Unterwurzacher
This should get rid of Openat: O_NOFOLLOW missing: flags = 0x0 Fchmodat: adding missing AT_SYMLINK_NOFOLLOW flag sys_common_test.go:203: chmod on symlink should have failed, but did not. New mode=0333 UnmountErr: "[...]/057376762.mnt" was not found in MountInfo, cannot check for FD leak and add some context to --- FAIL: TestUtimesNano (0.00s) matrix_test.go:628: no such file or directory See https://github.com/rfjakob/gocryptfs/pull/343#issuecomment-453888006 for full test output
2019-01-14syscallcompat: fix FchmodatNofollow testsJakob Unterwurzacher
FchmodatNofollow dropped the flags parameter.
2019-01-14syscallcompat: rework Fchmodat to FchmodatNofollowJakob Unterwurzacher
We never want Fchmodat to follow symlinks, so follow what Qemu does, and call our function FchmodatNofollow.
2019-01-14syscallcompat: Drop Fstatat emulation on macOS.Sebastian Lackner
2019-01-14syscallcompat: Drop Mkdirat emulation on macOS.Sebastian Lackner
2019-01-14syscallcompat: Drop Symlinkat emulation on macOS.Sebastian Lackner
2019-01-14syscallcompat: Drop Fchownat emulation on macOS.Sebastian Lackner
2019-01-14syscallcompat: Drop Fchmodat emulation on macOS.Sebastian Lackner
On macOS the function has a flags argument, so we don't need the /proc/self/fd trick used on Linux.
2019-01-14syscallcompat: Drop Unlinkat emulation on macOS.Sebastian Lackner
2019-01-14syscallcompat: Drop Renameat emulation on macOS.Sebastian Lackner
2019-01-14syscallcompat: Drop Openat emulation on macOS.Sebastian Lackner
2019-01-14syscallcompat: Use pthread_setugid_np() to implement *User() functions on macOS.Sebastian Lackner
Fixes -allow_other mode on macOS.
2019-01-13fusefrontend: drop last remaining call into loopbackFileSystemJakob Unterwurzacher
The only call forwarded to loopbackFileSystem was Statfs, which is trivial to implement. Implement it and drop loopbackFileSystem, as having it carries the risk that a coding error bypasses the usual encryption/decryption chain.
2019-01-13fusefrontend: Do not pass unsupported flags to Faccessat on macOS.Sebastian Lackner
Fixes mounting of forward mounts on macOS High Sierra.
2019-01-13macos: filter SUID and SGID bits in OpenatUser, MknodatUser, MkdiratUserJakob Unterwurzacher
When gocryptfs runs as root, we don't want to allow people to create SUID root files.
2019-01-12fusefrontend: Preserve SUID/SGID/sticky-bits in openWriteOnlyFile and Rmdir.Sebastian Lackner
Fixes https://github.com/rfjakob/gocryptfs/issues/336 and https://github.com/rfjakob/gocryptfs/issues/337.
2019-01-12fusefrontend: -allow_other: Use SymlinkatUser in Symlink FUSE call.Sebastian Lackner
Instead of manually adjusting the user after creating the symlink, adjust effective permissions and let the kernel deal with it. Related to https://github.com/rfjakob/gocryptfs/issues/338.
2019-01-12fusefrontend: -allow_other: Use MknodatUser in Mknod FUSE call.Sebastian Lackner
Instead of manually adjusting the user and mode after creating the device file, adjust effective permissions and let the kernel deal with it. Related to https://github.com/rfjakob/gocryptfs/issues/338.
2019-01-12fusefrontend: -allow_other: Use MkdiratUser in Mkdir FUSE call.Sebastian Lackner
Revert commit fcaca5fc94d981aa637beb752edc8cb3c2265e96. Instead of manually adjusting the user and mode after creating the directory, adjust effective permissions and let the kernel deal with it. Related to https://github.com/rfjakob/gocryptfs/issues/338.
2019-01-12fusefrontend: -allow_other: Use OpenatUser in Create FUSE call.Sebastian Lackner
Revert commit b22cc03c7516b2003880db8375d26c76d6dff093. Instead of manually adjusting the user and mode after creating the file, adjust effective permissions and let the kernel deal with it. Related to https://github.com/rfjakob/gocryptfs/issues/338.