Browse Source

Merge pull request #2609 from calmh/fix2608

Don't crash on stat error in ensureDir (fixes #2608)
Audrius Butkevicius 10 years ago
parent
commit
71d98c2f26
1 changed files with 11 additions and 7 deletions
  1. 11 7
      cmd/syncthing/main.go

+ 11 - 7
cmd/syncthing/main.go

@@ -1036,13 +1036,17 @@ func ensureDir(dir string, mode os.FileMode) {
 		l.Fatalln(err)
 	}
 
-	fi, _ := os.Stat(dir)
-	currentMode := fi.Mode() & 0777
-	if mode >= 0 && currentMode != mode {
-		err := os.Chmod(dir, mode)
-		// This can fail on crappy filesystems, nothing we can do about it.
-		if err != nil {
-			l.Warnln(err)
+	if fi, err := os.Stat(dir); err == nil {
+		// Apprently the stat may fail even though the mkdirall passed. If it
+		// does, we'll just assume things are in order and let other things
+		// fail (like loading or creating the config...).
+		currentMode := fi.Mode() & 0777
+		if currentMode != mode {
+			err := os.Chmod(dir, mode)
+			// This can fail on crappy filesystems, nothing we can do about it.
+			if err != nil {
+				l.Warnln(err)
+			}
 		}
 	}
 }