From 285dcc30cfb8f8e7dd405c4e8b10d129a7e4a7eb Mon Sep 17 00:00:00 2001 From: Jakob Borg Date: Sat, 9 May 2015 21:37:09 +0200 Subject: [PATCH] Use md5 hash of filename for temporary file (fixes #1786) --- internal/model/tempname.go | 5 ++++- internal/model/tempname_windows.go | 5 ++++- ... => .syncthing.8c7dd922ad47494fc02c388e12c00eac} | Bin ...syncthing~.8c7dd922ad47494fc02c388e12c00eac.tmp} | Bin 4 files changed, 8 insertions(+), 2 deletions(-) rename internal/model/testdata/{.syncthing.file => .syncthing.8c7dd922ad47494fc02c388e12c00eac} (100%) rename internal/model/testdata/{~syncthing~.file.tmp => ~syncthing~.8c7dd922ad47494fc02c388e12c00eac.tmp} (100%) diff --git a/internal/model/tempname.go b/internal/model/tempname.go index 66ae88cf0..26be95f33 100644 --- a/internal/model/tempname.go +++ b/internal/model/tempname.go @@ -9,6 +9,7 @@ package model import ( + "crypto/md5" "fmt" "path/filepath" "strings" @@ -25,7 +26,9 @@ func (t tempNamer) IsTemporary(name string) bool { } func (t tempNamer) TempName(name string) string { + hash := md5.New() + hash.Write([]byte(name)) tdir := filepath.Dir(name) - tname := fmt.Sprintf("%s.%s", t.prefix, filepath.Base(name)) + tname := fmt.Sprintf("%s.%x", t.prefix, hash.Sum(nil)) return filepath.Join(tdir, tname) } diff --git a/internal/model/tempname_windows.go b/internal/model/tempname_windows.go index b928acaf9..02c9f9f09 100644 --- a/internal/model/tempname_windows.go +++ b/internal/model/tempname_windows.go @@ -9,6 +9,7 @@ package model import ( + "crypto/md5" "fmt" "path/filepath" "strings" @@ -25,7 +26,9 @@ func (t tempNamer) IsTemporary(name string) bool { } func (t tempNamer) TempName(name string) string { + hash := md5.New() + hash.Write([]byte(name)) tdir := filepath.Dir(name) - tname := fmt.Sprintf("%s.%s.tmp", t.prefix, filepath.Base(name)) + tname := fmt.Sprintf("%s.%x.tmp", t.prefix, hash.Sum(nil)) return filepath.Join(tdir, tname) } diff --git a/internal/model/testdata/.syncthing.file b/internal/model/testdata/.syncthing.8c7dd922ad47494fc02c388e12c00eac similarity index 100% rename from internal/model/testdata/.syncthing.file rename to internal/model/testdata/.syncthing.8c7dd922ad47494fc02c388e12c00eac diff --git a/internal/model/testdata/~syncthing~.file.tmp b/internal/model/testdata/~syncthing~.8c7dd922ad47494fc02c388e12c00eac.tmp similarity index 100% rename from internal/model/testdata/~syncthing~.file.tmp rename to internal/model/testdata/~syncthing~.8c7dd922ad47494fc02c388e12c00eac.tmp