telnet icon indicating copy to clipboard operation
telnet copied to clipboard

TryReadByte causes a panic

Open syllith opened this issue 5 months ago • 1 comments

Seemingly randomly, I get a crash with this call stack:

panic: runtime error: index out of range [256] with length 256

goroutine 40 [running]: bufio.(*Reader).ReadByte(0xc000580360) C:/Program Files/Go/src/bufio/bufio.go:271 +0xa5 github.com/ziutek/telnet.(*Conn).tryReadByte(0xc0016d2000) C:/Users/kinlougn/go/pkg/mod/github.com/ziutek/[email protected]/conn.go:230 +0x25 github.com/ziutek/telnet.(*Conn).Read(0xc0016d2000, {0xc000ce7e28, 0x100, 0xc000ce7e60?}) C:/Users/kinlougn/go/pkg/mod/github.com/ziutek/[email protected]/conn.go:299 +0x45 breeze/avocent.continuouslyReadOutput() C:/Users/kinlougn/Github Repos/Breeze/avocent/avocent.go:60 +0x66 created by breeze/avocent.Connect in goroutine 10 C:/Users/kinlougn/Github Repos/Breeze/avocent/avocent.go:42 +0x105 exit status 2

This is the code that I'm using to call it. Am I doing something wrong, or is this a bug?

func continuouslyReadOutput() {
	buf := make([]byte, 256)
	for {
		select {
		case <-done:
			return // Stop the goroutine when the connection is closed
		default:
			n, err := conn.Read(buf)
			if err != nil {
				if err == io.EOF {
					log.Println("Connection closed by the server.")
					return
				}
				log.Printf("Error reading from connection: %v", err)
				continue
			}
			if n > 0 {
				output := string(buf[:n])
				accumulatedOutput.WriteString(output)
			}
		}
	}
}

syllith avatar Sep 05 '24 19:09 syllith