mirror of
https://github.com/shadow1ng/fscan.git
synced 2026-09-22 03:10:42 +08:00
52 lines
1.2 KiB
Go
52 lines
1.2 KiB
Go
//go:build plugin_smb || !plugin_selective
|
|
|
|
package services
|
|
|
|
import (
|
|
"io"
|
|
"net"
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
type chunkedSMBConn struct {
|
|
data []byte
|
|
chunkSize int
|
|
}
|
|
|
|
func (c *chunkedSMBConn) Read(p []byte) (int, error) {
|
|
if len(c.data) == 0 {
|
|
return 0, io.EOF
|
|
}
|
|
n := len(c.data)
|
|
if c.chunkSize > 0 && n > c.chunkSize {
|
|
n = c.chunkSize
|
|
}
|
|
if n > len(p) {
|
|
n = len(p)
|
|
}
|
|
copy(p, c.data[:n])
|
|
c.data = c.data[n:]
|
|
return n, nil
|
|
}
|
|
|
|
func (c *chunkedSMBConn) Write([]byte) (int, error) { return 0, nil }
|
|
func (c *chunkedSMBConn) Close() error { return nil }
|
|
func (c *chunkedSMBConn) LocalAddr() net.Addr { return nil }
|
|
func (c *chunkedSMBConn) RemoteAddr() net.Addr { return nil }
|
|
func (c *chunkedSMBConn) SetDeadline(time.Time) error { return nil }
|
|
func (c *chunkedSMBConn) SetReadDeadline(time.Time) error { return nil }
|
|
func (c *chunkedSMBConn) SetWriteDeadline(time.Time) error {
|
|
return nil
|
|
}
|
|
|
|
func TestReadSMBMessageHandlesChunkedReads(t *testing.T) {
|
|
got, err := readSMBMessage(&chunkedSMBConn{data: []byte{0, 0, 0, 3, 'S', 'M', 'B'}, chunkSize: 1})
|
|
if err != nil {
|
|
t.Fatalf("readSMBMessage() error = %v", err)
|
|
}
|
|
if string(got) != "\x00\x00\x00\x03SMB" {
|
|
t.Fatalf("readSMBMessage() = %q", got)
|
|
}
|
|
}
|