aboutsummaryrefslogtreecommitdiff
path: root/plugin/file/setup.go
diff options
context:
space:
mode:
authorGravatar Yong Tang <yong.tang.github@outlook.com> 2022-10-11 14:49:52 -0400
committerGravatar GitHub <noreply@github.com> 2022-10-11 20:49:52 +0200
commitc6a543551e8b59f6bee390d3a246ec3025c85ae0 (patch)
treef98dbb2ccf57e9206d2692a2394b6209ad1ad252 /plugin/file/setup.go
parent26aae951e76fd4d110dce382791df34246e3a34e (diff)
downloadcoredns-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.go27
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() {