@@ -251,15 +251,16 @@ func (p *protoHandler) getSelfHandler(in json.RawMessage) (interface{}, error) {
251251 if kbs , err = hex .DecodeString (req .Key ); err != nil {
252252 return nil , err
253253 }
254+ if len (kbs ) != ed25519 .PublicKeySize {
255+ return nil , fmt .Errorf ("invalid public key length" )
256+ }
254257 copy (key [:], kbs )
255258 ch := make (chan []byte , 1 )
256259 p .sendGetSelfRequest (key , func (info []byte ) {
257260 ch <- info
258261 })
259- timer := time .NewTimer (6 * time .Second )
260- defer timer .Stop ()
261262 select {
262- case <- timer . C :
263+ case <- time . After ( 6 * time . Second ) :
263264 return nil , errors .New ("timeout" )
264265 case info := <- ch :
265266 var msg json.RawMessage
@@ -291,15 +292,16 @@ func (p *protoHandler) getPeersHandler(in json.RawMessage) (interface{}, error)
291292 if kbs , err = hex .DecodeString (req .Key ); err != nil {
292293 return nil , err
293294 }
295+ if len (kbs ) != ed25519 .PublicKeySize {
296+ return nil , fmt .Errorf ("invalid public key length" )
297+ }
294298 copy (key [:], kbs )
295299 ch := make (chan []byte , 1 )
296300 p .sendGetPeersRequest (key , func (info []byte ) {
297301 ch <- info
298302 })
299- timer := time .NewTimer (6 * time .Second )
300- defer timer .Stop ()
301303 select {
302- case <- timer . C :
304+ case <- time . After ( 6 * time . Second ) :
303305 return nil , errors .New ("timeout" )
304306 case info := <- ch :
305307 ks := make (map [string ][]string )
@@ -341,15 +343,16 @@ func (p *protoHandler) getTreeHandler(in json.RawMessage) (interface{}, error) {
341343 if kbs , err = hex .DecodeString (req .Key ); err != nil {
342344 return nil , err
343345 }
346+ if len (kbs ) != ed25519 .PublicKeySize {
347+ return nil , fmt .Errorf ("invalid public key length" )
348+ }
344349 copy (key [:], kbs )
345350 ch := make (chan []byte , 1 )
346351 p .sendGetTreeRequest (key , func (info []byte ) {
347352 ch <- info
348353 })
349- timer := time .NewTimer (6 * time .Second )
350- defer timer .Stop ()
351354 select {
352- case <- timer . C :
355+ case <- time . After ( 6 * time . Second ) :
353356 return nil , errors .New ("timeout" )
354357 case info := <- ch :
355358 ks := make (map [string ][]string )
0 commit comments