From 5144470e3d30499fa42af84927fa8adc27b51e68 Mon Sep 17 00:00:00 2001
From: Jakob Unterwurzacher
Date: Sun, 16 Oct 2016 15:02:44 +0200
Subject: fusefrontend: Utimens: ugly band-aid for nil pointer crash in go-fuse

Crash is described at https://github.com/rfjakob/gocryptfs/issues/48 .
Revert this once https://github.com/hanwen/go-fuse/pull/131 is merged.
---
 internal/fusefrontend/file.go | 12 ++++++++++++
 1 file changed, 12 insertions(+)

(limited to 'internal/fusefrontend')

diff --git a/internal/fusefrontend/file.go b/internal/fusefrontend/file.go
index ab025d3..796aee8 100644
--- a/internal/fusefrontend/file.go
+++ b/internal/fusefrontend/file.go
@@ -386,7 +386,19 @@ func (f *file) GetAttr(a *fuse.Attr) fuse.Status {
 	return fuse.OK
 }
 
+// TODO drop this once https://github.com/hanwen/go-fuse/pull/131 is
+// merged
+const BrokenAtimeOmit = true
+
 func (f *file) Utimens(a *time.Time, m *time.Time) fuse.Status {
+	if a == nil && BrokenAtimeOmit {
+		// Band-aid for a nil pointer crash, described in
+		// https://github.com/rfjakob/gocryptfs/issues/48
+		//
+		// TODO drop this once https://github.com/hanwen/go-fuse/pull/131 is
+		// merged
+		a = m
+	}
 	f.fdLock.RLock()
 	defer f.fdLock.RUnlock()
 	return f.loopbackFile.Utimens(a, m)
-- 
cgit v1.2.3