From 0e42f630fada9d121e9d06099f48fd7a03941b16 Mon Sep 17 00:00:00 2001 From: sina Date: Sun, 23 Oct 2022 23:32:57 +0330 Subject: fix chunk reader --- ioaead.go | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/ioaead.go b/ioaead.go index 63b4a74..773f641 100644 --- a/ioaead.go +++ b/ioaead.go @@ -144,7 +144,27 @@ func (r *streamReader) readTo(b []byte) (int, error) { // in such a case, you need to unread data. a simple demonstration would be to delete // or truncate the file if ErrAuthMsg is returned func (r *streamReader) Read(b []byte) (int, error) { - return r.readTo(b) + if len(b) <= 16 { + return r.readTo(b) + } + n := 0 + for { + if n+16 > len(b) { + sr, err := r.readTo(b[n:]) + n += sr + if err != nil { + return n, err + } + break + } + + sr, err := r.readTo(b[n : n+16]) + n += sr + if err != nil { + return n, err + } + } + return n, nil } func (r *streamReader) verify() error { -- cgit v1.2.3