]> Sergey Matveev's repositories - btrtrc.git/commitdiff
Fix incomplete Integer.Read
authorMatt Joiner <anacrolix@gmail.com>
Tue, 19 Oct 2021 02:13:23 +0000 (13:13 +1100)
committerMatt Joiner <anacrolix@gmail.com>
Tue, 19 Oct 2021 03:07:23 +0000 (14:07 +1100)
Possibly on read buffer boundaries, this would have caused errant io.ErrUnexpectedEOF.

(cherry picked from commit 22569449dad48e1c5cdeac171625585f8ca976c9)

peer_protocol/int.go

index 80fb6624d7bcd3ef148141ec5885a663f6950699..13bd1ca9c2027e6449a9b07d15b1a70bb2b8d791 100644 (file)
@@ -19,12 +19,12 @@ func (i *Integer) UnmarshalBinary(b []byte) error {
 
 func (i *Integer) Read(r io.Reader) error {
        var b [4]byte
-       n, err := r.Read(b[:])
-       if n == 4 {
-               return i.UnmarshalBinary(b[:])
-       }
+       n, err := io.ReadFull(r, b[:])
        if err == nil {
-               return io.ErrUnexpectedEOF
+               if n != 4 {
+                       panic(n)
+               }
+               return i.UnmarshalBinary(b[:])
        }
        return err
 }