From 6ec1926f884a74e069885688e1f7595f50e4621f Mon Sep 17 00:00:00 2001 From: Brad Davidson Date: Tue, 30 Jan 2024 22:44:58 +0000 Subject: [PATCH] Add check for etcd-snapshot-dir and fix panic in Walk Signed-off-by: Brad Davidson --- pkg/etcd/snapshot.go | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/pkg/etcd/snapshot.go b/pkg/etcd/snapshot.go index afdca6e296..d9f5f7689c 100644 --- a/pkg/etcd/snapshot.go +++ b/pkg/etcd/snapshot.go @@ -245,7 +245,13 @@ func (e *ETCD) Snapshot(ctx context.Context) error { snapshotDir, err := snapshotDir(e.config, true) if err != nil { - return errors.Wrap(err, "failed to get the snapshot dir") + return errors.Wrap(err, "failed to get etcd-snapshot-dir") + } + + if info, err := os.Stat(snapshotDir); err != nil { + return errors.Wrapf(err, "failed to stat etcd-snapshot-dir %s", snapshotDir) + } else if !info.IsDir() { + return fmt.Errorf("etcd-snapshot-dir %s is not a directory", snapshotDir) } cfg, err := getClientConfig(ctx, e.config) @@ -436,7 +442,7 @@ func (e *ETCD) listLocalSnapshots() (map[string]snapshotFile, error) { } if err := filepath.Walk(snapshotDir, func(path string, file os.FileInfo, err error) error { - if file.IsDir() || err != nil { + if err != nil || file.IsDir() { return err }