From: Josh Bleecher Snyder Date: Mon, 28 Oct 2013 23:31:25 +0000 (-0400) Subject: net: handle single-line non-\n-terminated files correctly in readLine X-Git-Tag: go1.3beta1~1383 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=5644774ea5c954a08c1e068be9771429a232ca7c;p=gostls13.git net: handle single-line non-\n-terminated files correctly in readLine Fixes #6646. R=rsc, bradfitz CC=golang-dev https://golang.org/cl/15960047 --- diff --git a/src/pkg/net/hosts_test.go b/src/pkg/net/hosts_test.go index 064e7e4328..b07ed0baa9 100644 --- a/src/pkg/net/hosts_test.go +++ b/src/pkg/net/hosts_test.go @@ -53,6 +53,19 @@ func TestLookupStaticHost(t *testing.T) { hostsPath = p } +// https://code.google.com/p/go/issues/detail?id=6646 +func TestSingleLineHostsFile(t *testing.T) { + p := hostsPath + hostsPath = "testdata/hosts_singleline" + + ips := lookupStaticHost("odin") + if len(ips) != 1 || ips[0] != "127.0.0.2" { + t.Errorf("lookupStaticHost = %v, want %v", ips, []string{"127.0.0.2"}) + } + + hostsPath = p +} + func TestLookupHost(t *testing.T) { // Can't depend on this to return anything in particular, // but if it does return something, make sure it doesn't diff --git a/src/pkg/net/parse.go b/src/pkg/net/parse.go index 7c87b42f6d..6056de248e 100644 --- a/src/pkg/net/parse.go +++ b/src/pkg/net/parse.go @@ -54,7 +54,7 @@ func (f *file) readLine() (s string, ok bool) { if n >= 0 { f.data = f.data[0 : ln+n] } - if err == io.EOF { + if err == io.EOF || err == io.ErrUnexpectedEOF { f.atEOF = true } } diff --git a/src/pkg/net/testdata/hosts_singleline b/src/pkg/net/testdata/hosts_singleline new file mode 100644 index 0000000000..5f5f74a3fa --- /dev/null +++ b/src/pkg/net/testdata/hosts_singleline @@ -0,0 +1 @@ +127.0.0.2 odin \ No newline at end of file