From ef585ed810a6913e7174c19ed383ddba9c3949ed Mon Sep 17 00:00:00 2001 From: Matthew Holt Date: Wed, 14 Feb 2018 13:32:16 -0700 Subject: [PATCH] tls: Ensure parent dir exists before creating lock file --- caddytls/filestoragesync.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/caddytls/filestoragesync.go b/caddytls/filestoragesync.go index 4c81ca02e..a8e7b9291 100644 --- a/caddytls/filestoragesync.go +++ b/caddytls/filestoragesync.go @@ -61,6 +61,10 @@ func (s *fileStorageLock) TryLock(name string) (Waiter, error) { filename: s.storage.siteCertFile(name) + ".lock", wg: new(sync.WaitGroup), } + // parent dir must exist + if err := os.MkdirAll(s.storage.site(name), 0700); err != nil { + return nil, err + } lf, err := os.OpenFile(fw.filename, os.O_CREATE|os.O_EXCL, 0644) if err != nil { if os.IsExist(err) {