<feed xmlns='http://www.w3.org/2005/Atom'>
<title>gocryptfs/internal/fusefrontend, branch v1.4.2</title>
<subtitle>Mirror of gocryptfs source code on Github</subtitle>
<id>http://nuetzlich.net/cgit/gocryptfs/atom?h=v1.4.2</id>
<link rel='self' href='http://nuetzlich.net/cgit/gocryptfs/atom?h=v1.4.2'/>
<link rel='alternate' type='text/html' href='http://nuetzlich.net/cgit/gocryptfs/'/>
<updated>2017-10-21T15:43:21+00:00</updated>
<entry>
<title>Revert most of "fusefrontend: clamp oversized reads"</title>
<updated>2017-10-21T15:43:21+00:00</updated>
<author>
<name>Jakob Unterwurzacher</name>
</author>
<published>2017-10-21T15:43:21+00:00</published>
<link rel='alternate' type='text/html' href='http://nuetzlich.net/cgit/gocryptfs/commit/?id=268e0484e24c3ecf9ec8df189a18cbbf36f81d1a'/>
<id>urn:sha1:268e0484e24c3ecf9ec8df189a18cbbf36f81d1a</id>
<content type='text'>
We cannot return less data than requested to the kernel!

From https://libfuse.github.io/doxygen/structfuse__operations.html:

  Read should return exactly the number of bytes
  requested except on EOF or error, otherwise the
  rest of the data will be substituted with
  zeroes.

Reverts commit 3009ec9852316c3c696f77f476390ab5a6d8d6d7 minus
the formatting improvements we want to keep.

Fixes https://github.com/rfjakob/gocryptfs/issues/147
Reopens https://github.com/rfjakob/gocryptfs/issues/145
</content>
</entry>
<entry>
<title>fusefrontend: clamp oversized reads</title>
<updated>2017-10-17T19:48:29+00:00</updated>
<author>
<name>Jakob Unterwurzacher</name>
</author>
<published>2017-10-17T19:47:32+00:00</published>
<link rel='alternate' type='text/html' href='http://nuetzlich.net/cgit/gocryptfs/commit/?id=3009ec9852316c3c696f77f476390ab5a6d8d6d7'/>
<id>urn:sha1:3009ec9852316c3c696f77f476390ab5a6d8d6d7</id>
<content type='text'>
Our byte cache pools are sized acc. to MAX_KERNEL_WRITE, but the
running kernel may have a higher limit set. Clamp to what we can
handle.

Fixes a panic on a Synology NAS reported at
https://github.com/rfjakob/gocryptfs/issues/145
</content>
</entry>
<entry>
<title>macos: automatically remove .DS_Store on Rmdir</title>
<updated>2017-09-05T20:47:15+00:00</updated>
<author>
<name>Jakob Unterwurzacher</name>
</author>
<published>2017-09-05T20:47:15+00:00</published>
<link rel='alternate' type='text/html' href='http://nuetzlich.net/cgit/gocryptfs/commit/?id=604b0779d47d39fc5390a67167a8090748843cc1'/>
<id>urn:sha1:604b0779d47d39fc5390a67167a8090748843cc1</id>
<content type='text'>
MacOS sprinkles .DS_Store files everywhere. This is hard to avoid for
users, so handle it transparently in Rmdir().

Mitigates https://github.com/rfjakob/gocryptfs/issues/140
</content>
</entry>
<entry>
<title>fusefrontend: reorder logic in Rmdir to get rid of one indentation level</title>
<updated>2017-09-05T20:10:08+00:00</updated>
<author>
<name>Jakob Unterwurzacher</name>
</author>
<published>2017-09-05T20:08:59+00:00</published>
<link rel='alternate' type='text/html' href='http://nuetzlich.net/cgit/gocryptfs/commit/?id=6f3b65d924d8ab0827516ee274935b2c18979e10'/>
<id>urn:sha1:6f3b65d924d8ab0827516ee274935b2c18979e10</id>
<content type='text'>
Handle the errors first so that the normal code path is not indented.

This should not cause any behavoir changes.
</content>
</entry>
<entry>
<title>macos: don't throw IO errors because of .DS_Store files</title>
<updated>2017-09-05T19:47:05+00:00</updated>
<author>
<name>Jakob Unterwurzacher</name>
</author>
<published>2017-09-05T19:47:05+00:00</published>
<link rel='alternate' type='text/html' href='http://nuetzlich.net/cgit/gocryptfs/commit/?id=3a5a783b54a913294658041f22066e0618ee91f3'/>
<id>urn:sha1:3a5a783b54a913294658041f22066e0618ee91f3</id>
<content type='text'>
MacOS creates lots of these files, and if the directory is otherwise
empty, we would throw an IO error to the unsuspecting user.

With this patch, we log a warning, but otherwise pretend we did not
see it.

Mitigates https://github.com/rfjakob/gocryptfs/issues/140
</content>
</entry>
<entry>
<title>syscallcompat: Getdents: warn once if we get DT_UNKNOWN</title>
<updated>2017-09-03T13:05:54+00:00</updated>
<author>
<name>Jakob Unterwurzacher</name>
</author>
<published>2017-09-03T13:05:54+00:00</published>
<link rel='alternate' type='text/html' href='http://nuetzlich.net/cgit/gocryptfs/commit/?id=538cae610cc4f7512cfb7a3b64a47e2fba9ea3c7'/>
<id>urn:sha1:538cae610cc4f7512cfb7a3b64a47e2fba9ea3c7</id>
<content type='text'>
...and if Getdents is not available at all.

Due to this warning I now know that SSHFS always returns DT_UNKNOWN:

    gocryptfs[8129]: Getdents: convertDType: received DT_UNKNOWN, falling back to Lstat

This behavoir is confirmed at http://ahefner.livejournal.com/16875.html:

    "With sshfs, I finally found that obscure case. The dtype is always set to DT_UNKNOWN [...]"
</content>
</entry>
<entry>
<title>fusefrontend: use DirIVCache in OpenDir()</title>
<updated>2017-09-03T11:59:53+00:00</updated>
<author>
<name>Jakob Unterwurzacher</name>
</author>
<published>2017-09-03T11:56:11+00:00</published>
<link rel='alternate' type='text/html' href='http://nuetzlich.net/cgit/gocryptfs/commit/?id=276567eb13f8fcbea73aa6d0b40082983301ac80'/>
<id>urn:sha1:276567eb13f8fcbea73aa6d0b40082983301ac80</id>
<content type='text'>
Previously, OpenDir() did not use the cache at all, missing
an opportunity to speed up repeated directory reads.
</content>
</entry>
<entry>
<title>fusefrontend: use Getdents if available</title>
<updated>2017-08-15T17:04:02+00:00</updated>
<author>
<name>Jakob Unterwurzacher</name>
</author>
<published>2017-08-15T16:35:30+00:00</published>
<link rel='alternate' type='text/html' href='http://nuetzlich.net/cgit/gocryptfs/commit/?id=989b88098951e5ad68b66049e59fd2ca475c4711'/>
<id>urn:sha1:989b88098951e5ad68b66049e59fd2ca475c4711</id>
<content type='text'>
Getdents avoids calling Lstat on each file.
</content>
</entry>
<entry>
<title>main: purge masterkey from memory as soon as possible</title>
<updated>2017-08-11T17:02:26+00:00</updated>
<author>
<name>Jakob Unterwurzacher</name>
</author>
<published>2017-08-11T16:42:30+00:00</published>
<link rel='alternate' type='text/html' href='http://nuetzlich.net/cgit/gocryptfs/commit/?id=0c520845f3623eff28f0277a52e3ccffd928f5c2'/>
<id>urn:sha1:0c520845f3623eff28f0277a52e3ccffd928f5c2</id>
<content type='text'>
Remove the "Masterkey" field from fusefrontend.Args because it
should not be stored longer than neccessary. Instead pass the
masterkey as a separate argument to the filesystem initializers.

Then overwrite it with zeros immediately so we don't have
to wait for garbage collection.

Note that the crypto implementation still stores at least a
masterkey-derived value, so this change makes it harder, but not
impossible, to extract the encryption keys from memory.

Suggested at https://github.com/rfjakob/gocryptfs/issues/137
</content>
</entry>
<entry>
<title>fusefronted: enable writing to write-only files</title>
<updated>2017-07-11T21:19:58+00:00</updated>
<author>
<name>Jakob Unterwurzacher</name>
</author>
<published>2017-07-11T21:19:58+00:00</published>
<link rel='alternate' type='text/html' href='http://nuetzlich.net/cgit/gocryptfs/commit/?id=3062de6187990f9b4f669ecd9dffdd48ee0d778f'/>
<id>urn:sha1:3062de6187990f9b4f669ecd9dffdd48ee0d778f</id>
<content type='text'>
Due to RMW, we always need read permissions on the backing file. This is a
problem if the file permissions do not allow reading (i.e. 0200 permissions).
This patch works around that problem by chmod'ing the file, obtaining a fd,
and chmod'ing it back.

Test included.

Issue reported at: https://github.com/rfjakob/gocryptfs/issues/125
</content>
</entry>
</feed>
