diff options
author | 2022-10-11 14:49:52 -0400 | |
---|---|---|
committer | 2022-10-11 20:49:52 +0200 | |
commit | c6a543551e8b59f6bee390d3a246ec3025c85ae0 (patch) | |
tree | f98dbb2ccf57e9206d2692a2394b6209ad1ad252 /plugin/file/setup.go | |
parent | 26aae951e76fd4d110dce382791df34246e3a34e (diff) | |
download | coredns-c6a543551e8b59f6bee390d3a246ec3025c85ae0.tar.gz coredns-c6a543551e8b59f6bee390d3a246ec3025c85ae0.tar.zst coredns-c6a543551e8b59f6bee390d3a246ec3025c85ae0.zip |
plugin/file: fix file leak (#5687)
Diffstat (limited to '')
-rw-r--r-- | plugin/file/setup.go | 27 |
1 files changed, 18 insertions, 9 deletions
diff --git a/plugin/file/setup.go b/plugin/file/setup.go index 95e5d729a..73a2a233e 100644 --- a/plugin/file/setup.go +++ b/plugin/file/setup.go @@ -93,17 +93,26 @@ func fileParse(c *caddy.Controller) (Zones, error) { openErr = err } - for i := range origins { - z[origins[i]] = NewZone(origins[i], fileName) - if openErr == nil { - reader.Seek(0, 0) - zone, err := Parse(reader, origins[i], fileName, 0) - if err != nil { - return Zones{}, err + err = func() error { + defer reader.Close() + + for i := range origins { + z[origins[i]] = NewZone(origins[i], fileName) + if openErr == nil { + reader.Seek(0, 0) + zone, err := Parse(reader, origins[i], fileName, 0) + if err != nil { + return err + } + z[origins[i]] = zone } - z[origins[i]] = zone + names = append(names, origins[i]) } - names = append(names, origins[i]) + return nil + }() + + if err != nil { + return Zones{}, err } for c.NextBlock() { |