diff --git a/internal/dns/nameserver.go b/internal/dns/nameserver.go index 61ce16e9..78fb1b59 100644 --- a/internal/dns/nameserver.go +++ b/internal/dns/nameserver.go @@ -26,7 +26,7 @@ func (c *configurator) UseDNSInternally(ip net.IP) { func (c *configurator) UseDNSSystemWide(ip net.IP, keepNameserver bool) error { c.logger.Info("using DNS address %s system wide", ip.String()) const filepath = string(constants.ResolvConf) - file, err := c.openFile(filepath, os.O_RDWR, 0644) + file, err := c.openFile(filepath, os.O_RDWR|os.O_TRUNC, 0644) if err != nil { return err } @@ -52,7 +52,7 @@ func (c *configurator) UseDNSSystemWide(ip net.IP, keepNameserver bool) error { if !found { lines = append(lines, "nameserver "+ip.String()) } - s = strings.Join(lines, "\n") + s = strings.Join(lines, "\n") + "\n" _, err = file.WriteString(s) if err != nil { _ = file.Close() diff --git a/internal/dns/nameserver_test.go b/internal/dns/nameserver_test.go index 2b5e5889..6f12ea9d 100644 --- a/internal/dns/nameserver_test.go +++ b/internal/dns/nameserver_test.go @@ -27,7 +27,7 @@ func Test_UseDNSSystemWide(t *testing.T) { err error }{ "no data": { - writtenData: "nameserver 127.0.0.1", + writtenData: "nameserver 127.0.0.1\n", }, "open error": { openErr: fmt.Errorf("error"), @@ -38,17 +38,17 @@ func Test_UseDNSSystemWide(t *testing.T) { err: fmt.Errorf("error"), }, "write error": { - writtenData: "nameserver 127.0.0.1", + writtenData: "nameserver 127.0.0.1\n", writeErr: fmt.Errorf("error"), err: fmt.Errorf("error"), }, "lines without nameserver": { data: []byte("abc\ndef\n"), - writtenData: "abc\ndef\nnameserver 127.0.0.1", + writtenData: "abc\ndef\nnameserver 127.0.0.1\n", }, "lines with nameserver": { data: []byte("abc\nnameserver abc def\ndef\n"), - writtenData: "abc\nnameserver 127.0.0.1\ndef", + writtenData: "abc\nnameserver 127.0.0.1\ndef\n", }, } for name, tc := range tests { @@ -83,7 +83,7 @@ func Test_UseDNSSystemWide(t *testing.T) { openFile := func(name string, flag int, perm os.FileMode) (os.File, error) { assert.Equal(t, string(constants.ResolvConf), name) - assert.Equal(t, os.O_RDWR, flag) + assert.Equal(t, os.O_RDWR|os.O_TRUNC, flag) assert.Equal(t, os.FileMode(0644), perm) return file, tc.openErr }