Skip to content

Commit 94f79d8

Browse files
committed
Merge pull request #1000 from sanimej/panic
Fix out of bound slice access in etchosts.go/Delete()
2 parents 8ddda93 + 7bc9320 commit 94f79d8

2 files changed

Lines changed: 27 additions & 0 deletions

File tree

etchosts/etchosts.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,10 @@ func Delete(path string, recs []Record) error {
159159
loop:
160160
for s.Scan() {
161161
b := s.Bytes()
162+
if len(b) == 0 {
163+
continue
164+
}
165+
162166
if b[0] == '#' {
163167
buf.Write(b)
164168
buf.Write(eol)

etchosts/etchosts_test.go

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -331,6 +331,29 @@ func TestDeleteEmpty(t *testing.T) {
331331
}
332332
}
333333

334+
func TestDeleteNewline(t *testing.T) {
335+
file, err := ioutil.TempFile("", "")
336+
if err != nil {
337+
t.Fatal(err)
338+
}
339+
defer os.Remove(file.Name())
340+
341+
b := []byte("\n")
342+
if _, err := file.Write(b); err != nil {
343+
t.Fatal(err)
344+
}
345+
346+
rec := []Record{
347+
{
348+
Hosts: "prefix",
349+
IP: "2.2.2.2",
350+
},
351+
}
352+
if err := Delete(file.Name(), rec); err != nil {
353+
t.Fatal(err)
354+
}
355+
}
356+
334357
func TestDelete(t *testing.T) {
335358
file, err := ioutil.TempFile("", "")
336359
if err != nil {

0 commit comments

Comments
 (0)