From: Matt Joiner Date: Wed, 19 Nov 2014 03:54:53 +0000 (-0600) Subject: dht: Handle truncated KRPC packets better, requires an update to bencode package X-Git-Tag: v1.0.0~1504 X-Git-Url: http://www.git.stargrave.org/?a=commitdiff_plain;h=a87566b9f6eec0168532a229cf99ada468fc27d0;p=btrtrc.git dht: Handle truncated KRPC packets better, requires an update to bencode package --- diff --git a/dht/dht.go b/dht/dht.go index fc703085..010489fc 100644 --- a/dht/dht.go +++ b/dht/dht.go @@ -278,7 +278,12 @@ func (s *Server) processPacket(b []byte, addr dHTAddr) { err := bencode.Unmarshal(b, &d) if err != nil { if se, ok := err.(*bencode.SyntaxError); !ok || se.Offset != 0 { - log.Printf("%s: received bad krpc message: %s: %q", s, err, b) + log.Printf("%s: received bad krpc message: %s%s", s, err, func() string { + if se.What == io.ErrUnexpectedEOF { + return "" + } + return fmt.Sprintf(": %q", b) + }()) } return } @@ -309,6 +314,10 @@ func (s *Server) serve() error { if err != nil { return err } + if n == len(b) { + logonce.Stderr.Printf("received dht packet exceeds buffer size") + continue + } s.processPacket(b[:n], newDHTAddr(addr.(*net.UDPAddr))) } }