mirror of
https://github.com/yggdrasil-network/yggdrasil-go.git
synced 2024-11-25 02:55:26 +00:00
Validate public key lengths on debug_
API endpoints (fixes #1113)
This commit is contained in:
parent
6b6cd0bed5
commit
3dfa6d0cc9
@ -251,15 +251,16 @@ func (p *protoHandler) getSelfHandler(in json.RawMessage) (interface{}, error) {
|
|||||||
if kbs, err = hex.DecodeString(req.Key); err != nil {
|
if kbs, err = hex.DecodeString(req.Key); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
if len(kbs) != ed25519.PublicKeySize {
|
||||||
|
return nil, fmt.Errorf("invalid public key length")
|
||||||
|
}
|
||||||
copy(key[:], kbs)
|
copy(key[:], kbs)
|
||||||
ch := make(chan []byte, 1)
|
ch := make(chan []byte, 1)
|
||||||
p.sendGetSelfRequest(key, func(info []byte) {
|
p.sendGetSelfRequest(key, func(info []byte) {
|
||||||
ch <- info
|
ch <- info
|
||||||
})
|
})
|
||||||
timer := time.NewTimer(6 * time.Second)
|
|
||||||
defer timer.Stop()
|
|
||||||
select {
|
select {
|
||||||
case <-timer.C:
|
case <-time.After(6 * time.Second):
|
||||||
return nil, errors.New("timeout")
|
return nil, errors.New("timeout")
|
||||||
case info := <-ch:
|
case info := <-ch:
|
||||||
var msg json.RawMessage
|
var msg json.RawMessage
|
||||||
@ -291,15 +292,16 @@ func (p *protoHandler) getPeersHandler(in json.RawMessage) (interface{}, error)
|
|||||||
if kbs, err = hex.DecodeString(req.Key); err != nil {
|
if kbs, err = hex.DecodeString(req.Key); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
if len(kbs) != ed25519.PublicKeySize {
|
||||||
|
return nil, fmt.Errorf("invalid public key length")
|
||||||
|
}
|
||||||
copy(key[:], kbs)
|
copy(key[:], kbs)
|
||||||
ch := make(chan []byte, 1)
|
ch := make(chan []byte, 1)
|
||||||
p.sendGetPeersRequest(key, func(info []byte) {
|
p.sendGetPeersRequest(key, func(info []byte) {
|
||||||
ch <- info
|
ch <- info
|
||||||
})
|
})
|
||||||
timer := time.NewTimer(6 * time.Second)
|
|
||||||
defer timer.Stop()
|
|
||||||
select {
|
select {
|
||||||
case <-timer.C:
|
case <-time.After(6 * time.Second):
|
||||||
return nil, errors.New("timeout")
|
return nil, errors.New("timeout")
|
||||||
case info := <-ch:
|
case info := <-ch:
|
||||||
ks := make(map[string][]string)
|
ks := make(map[string][]string)
|
||||||
@ -341,15 +343,16 @@ func (p *protoHandler) getTreeHandler(in json.RawMessage) (interface{}, error) {
|
|||||||
if kbs, err = hex.DecodeString(req.Key); err != nil {
|
if kbs, err = hex.DecodeString(req.Key); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
if len(kbs) != ed25519.PublicKeySize {
|
||||||
|
return nil, fmt.Errorf("invalid public key length")
|
||||||
|
}
|
||||||
copy(key[:], kbs)
|
copy(key[:], kbs)
|
||||||
ch := make(chan []byte, 1)
|
ch := make(chan []byte, 1)
|
||||||
p.sendGetTreeRequest(key, func(info []byte) {
|
p.sendGetTreeRequest(key, func(info []byte) {
|
||||||
ch <- info
|
ch <- info
|
||||||
})
|
})
|
||||||
timer := time.NewTimer(6 * time.Second)
|
|
||||||
defer timer.Stop()
|
|
||||||
select {
|
select {
|
||||||
case <-timer.C:
|
case <-time.After(6 * time.Second):
|
||||||
return nil, errors.New("timeout")
|
return nil, errors.New("timeout")
|
||||||
case info := <-ch:
|
case info := <-ch:
|
||||||
ks := make(map[string][]string)
|
ks := make(map[string][]string)
|
||||||
|
Loading…
Reference in New Issue
Block a user