Skip to content

Commit d85fb66

Browse files
committed
fix: Introduce protocol-compliant check for maximum packet size
1 parent 517d4d1 commit d85fb66

File tree

1 file changed

+6
-2
lines changed

1 file changed

+6
-2
lines changed

pkg/server/nbd.go

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,10 @@ var (
1616
ErrInvalidBlocksize = errors.New("invalid blocksize")
1717
)
1818

19+
const (
20+
maximumPacketSize = 32 * 1024 * 1024 // Support for a 32M maximum packet size is expected: https://sourceforge.net/p/nbd/mailman/message/35081223/
21+
)
22+
1923
type Export struct {
2024
Name string
2125
Description string
@@ -46,7 +50,7 @@ func Handle(conn net.Conn, exports []Export, options *Options) error {
4650
}
4751

4852
if options.MaximumBlockSize == 0 {
49-
options.MaximumBlockSize = 0xffffffff
53+
options.MaximumBlockSize = maximumPacketSize
5054
}
5155

5256
// Negotiation
@@ -312,7 +316,7 @@ n:
312316
}
313317

314318
// Transmission
315-
b := make([]byte, options.MaximumBlockSize)
319+
b := make([]byte, maximumPacketSize)
316320
for {
317321
var requestHeader protocol.TransmissionRequestHeader
318322
if err := binary.Read(conn, binary.BigEndian, &requestHeader); err != nil {

0 commit comments

Comments
 (0)