From c5bc802ff021df9f99d15c32dc6ad58bf6b467d6 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Sat, 5 Nov 2016 11:52:53 +0100 Subject: [PATCH 1/2] fs.DeviceID(): Return errors when fi is nil --- src/restic/fs/deviceid_unix.go | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/restic/fs/deviceid_unix.go b/src/restic/fs/deviceid_unix.go index 684c3cc7d..40069d3e5 100644 --- a/src/restic/fs/deviceid_unix.go +++ b/src/restic/fs/deviceid_unix.go @@ -12,10 +12,19 @@ import ( // DeviceID extracts the device ID from an os.FileInfo object by casting it // to syscall.Stat_t func DeviceID(fi os.FileInfo) (deviceID uint64, err error) { + if fi == nil { + return 0, errors.New("unable to determine device: fi is nil") + } + + if fi.Sys() == nil { + return 0, errors.New("unable to determine device: fi.Sys() is nil") + } + if st, ok := fi.Sys().(*syscall.Stat_t); ok { // st.Dev is uint32 on Darwin and uint64 on Linux. Just cast // everything to uint64. return uint64(st.Dev), nil } + return 0, errors.New("Could not cast to syscall.Stat_t") } From 51322a10558327da169aef214064a114c788fa5e Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Sat, 5 Nov 2016 12:37:54 +0100 Subject: [PATCH 2/2] selectFunc: handle nil --- src/cmds/restic/cmd_backup.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/cmds/restic/cmd_backup.go b/src/cmds/restic/cmd_backup.go index d3c4d92ff..067edf751 100644 --- a/src/cmds/restic/cmd_backup.go +++ b/src/cmds/restic/cmd_backup.go @@ -359,7 +359,7 @@ func runBackup(opts BackupOptions, gopts GlobalOptions, args []string) error { return false } - if !opts.ExcludeOtherFS { + if !opts.ExcludeOtherFS || fi == nil { return true }