From ab2e77a9b5c1be7518c01a0f0458dd41de1eec49 Mon Sep 17 00:00:00 2001 From: Knut Ahlers Date: Sun, 22 Aug 2021 15:23:23 +0200 Subject: [PATCH] Fix: Handle empty store-file created for permission management Signed-off-by: Knut Ahlers --- metastore.go | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/metastore.go b/metastore.go index 729a6a1..fb0a5ce 100644 --- a/metastore.go +++ b/metastore.go @@ -21,7 +21,7 @@ func newMetaStoreFromDisk(filename string) (*metaStore, error) { filename: filename, } - f, err := os.Open(filename) + s, err := os.Stat(filename) switch { case err == nil: // This is fine @@ -31,6 +31,21 @@ func newMetaStoreFromDisk(filename string) (*metaStore, error) { return out, nil default: + return nil, errors.Wrap(err, "getting file stats for store") + } + + if s.IsDir() { + // A directory was provided + return nil, errors.New("store location is directory") + } + + if s.Size() == 0 { + // An empty file was created, we don't care and will overwrite on save + return out, nil + } + + f, err := os.Open(filename) + if err != nil { return nil, errors.Wrap(err, "opening store") } defer f.Close()