• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

lightningnetwork / lnd / 13211764208

08 Feb 2025 03:08AM UTC coverage: 49.288% (-9.5%) from 58.815%
13211764208

Pull #9489

github

calvinrzachman
itest: verify switchrpc server enforces send then track

We prevent the rpc server from allowing onion dispatches for
attempt IDs which have already been tracked by rpc clients.

This helps protect the client from leaking a duplicate onion
attempt. NOTE: This is not the only method for solving this
issue! The issue could be addressed via careful client side
programming which accounts for the uncertainty and async
nature of dispatching onions to a remote process via RPC.
This would require some lnd ChannelRouter changes for how
we intend to use these RPCs though.
Pull Request #9489: multi: add BuildOnion, SendOnion, and TrackOnion RPCs

474 of 990 new or added lines in 11 files covered. (47.88%)

27321 existing lines in 435 files now uncovered.

101192 of 205306 relevant lines covered (49.29%)

1.54 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

41.67
/lntypes/hash.go
1
package lntypes
2

3
import (
4
        "encoding/hex"
5
        "fmt"
6
)
7

8
// HashSize of array used to store hashes.
9
const HashSize = 32
10

11
// ZeroHash is a predefined hash containing all zeroes.
12
var ZeroHash Hash
13

14
// Hash is used in several of the lightning messages and common structures. It
15
// typically represents a payment hash.
16
type Hash [HashSize]byte
17

18
// String returns the Hash as a hexadecimal string.
19
func (hash Hash) String() string {
3✔
20
        return hex.EncodeToString(hash[:])
3✔
21
}
3✔
22

23
// MakeHash returns a new Hash from a byte slice.  An error is returned if
24
// the number of bytes passed in is not HashSize.
25
func MakeHash(newHash []byte) (Hash, error) {
3✔
26
        nhlen := len(newHash)
3✔
27
        if nhlen != HashSize {
3✔
28
                return Hash{}, fmt.Errorf("invalid hash length of %v, want %v",
×
29
                        nhlen, HashSize)
×
30
        }
×
31

32
        var hash Hash
3✔
33
        copy(hash[:], newHash)
3✔
34

3✔
35
        return hash, nil
3✔
36
}
37

38
// MakeHashFromStr creates a Hash from a hex hash string.
UNCOV
39
func MakeHashFromStr(newHash string) (Hash, error) {
×
UNCOV
40
        // Return error if hash string is of incorrect length.
×
UNCOV
41
        if len(newHash) != HashSize*2 {
×
42
                return Hash{}, fmt.Errorf("invalid hash string length of %v, "+
×
43
                        "want %v", len(newHash), HashSize*2)
×
44
        }
×
45

UNCOV
46
        hash, err := hex.DecodeString(newHash)
×
UNCOV
47
        if err != nil {
×
48
                return Hash{}, err
×
49
        }
×
50

UNCOV
51
        return MakeHash(hash)
×
52
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc