Compare commits

...

2 Commits

Author SHA1 Message Date
47645a8fce Pass TestDecodeMessageBErr 2025-04-25 15:26:12 -04:00
87c4ac8efb More robust integer comparison 2025-04-25 15:21:52 -04:00
2 changed files with 7 additions and 5 deletions

View File

@ -2,6 +2,7 @@ package hopp
import "io" import "io"
import "net" import "net"
import "errors"
import "context" import "context"
import "git.tebibyte.media/sashakoshka/hopp/tape" import "git.tebibyte.media/sashakoshka/hopp/tape"
@ -126,7 +127,7 @@ type Stream interface {
} }
func encodeMessageB(writer io.Writer, sizeLimit int64, method uint16, data []byte) error { func encodeMessageB(writer io.Writer, sizeLimit int64, method uint16, data []byte) error {
if len(data) > int(sizeLimit) { if int64(len(data)) > sizeLimit {
return ErrPayloadTooLarge return ErrPayloadTooLarge
} }
buffer := make([]byte, 10 + len(data)) buffer := make([]byte, 10 + len(data))
@ -148,7 +149,10 @@ func decodeMessageB(
) { ) {
headerBuffer := [10]byte { } headerBuffer := [10]byte { }
_, err = io.ReadFull(reader, headerBuffer[:]) _, err = io.ReadFull(reader, headerBuffer[:])
if err != nil { return 0, 0, nil, err } if err != nil {
if errors.Is(err, io.EOF) { return 0, 0, nil, io.ErrUnexpectedEOF }
return 0, 0, nil, err
}
method, err = tape.DecodeI16[uint16](headerBuffer[:2]) method, err = tape.DecodeI16[uint16](headerBuffer[:2])
if err != nil { return 0, 0, nil, err } if err != nil { return 0, 0, nil, err }
length, err := tape.DecodeI64[uint64](headerBuffer[2:10]) length, err := tape.DecodeI64[uint64](headerBuffer[2:10])

View File

@ -53,9 +53,7 @@ func TestDecodeMessageB(test *testing.T) {
func TestDecodeMessageBErr(test *testing.T) { func TestDecodeMessageBErr(test *testing.T) {
_, _, _, err := decodeMessageB(bytes.NewReader([]byte { _, _, _, err := decodeMessageB(bytes.NewReader([]byte {
0x6B, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6B, 0x12, 0x00, 0x00, 0x00, 0x00,
0x01, 0x06,
0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
}), defaultSizeLimit) }), defaultSizeLimit)
if !errors.Is(err, io.ErrUnexpectedEOF) { if !errors.Is(err, io.ErrUnexpectedEOF) {
test.Fatalf("wrong error: %v", err) test.Fatalf("wrong error: %v", err)