Skip to content

Commit c069480

Browse files
committed
showhex: fix processColor
1 parent ba7b776 commit c069480

File tree

2 files changed

+15
-4
lines changed

2 files changed

+15
-4
lines changed

pkg/zeta/showhex.go

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -166,18 +166,20 @@ func processColor(r io.Reader, w io.Writer, size int64, colorMode term.Level) er
166166
for {
167167
readBytes := min(size, 16)
168168
n, err := io.ReadFull(r, input[:readBytes])
169-
if err != nil {
169+
if err != nil && err != io.ErrUnexpectedEOF {
170170
break
171171
}
172172
if err := b.writeLine(offset, input[:n]); err != nil {
173173
return err
174174
}
175-
offset += 16
176175
size -= int64(n)
177-
if n != 16 || size <= 0 {
176+
if size <= 0 {
177+
break
178+
}
179+
if n != 16 {
178180
break
179181
}
182+
offset += 16
180183
}
181-
182184
return b.writeFooter()
183185
}

pkg/zeta/showhex_test.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,15 @@ func TestProcessColor(t *testing.T) {
1818
_ = processColor(bytes.NewReader(b), os.Stdout, int64(len(b)), term.Level16M)
1919
}
2020

21+
func TestProcessColorOverflow(t *testing.T) {
22+
b := make([]byte, 1000)
23+
_, err := rand.Read(b[10:])
24+
if err != nil {
25+
return
26+
}
27+
_ = processColor(bytes.NewReader(b), os.Stdout, int64(len(b))+8, term.Level16M)
28+
}
29+
2130
func TestBorder(t *testing.T) {
2231
input := make([]byte, 15)
2332
_, err := rand.Read(input)

0 commit comments

Comments
 (0)