mirror of
https://github.com/lightningnetwork/lnd.git
synced 2024-11-19 09:53:54 +01:00
tor: use string comparison to check min supported version
The current method would not allow version strings like 0.4.0.5 since it would check every number of the version string individually.
This commit is contained in:
parent
1acd38e48c
commit
4eb9ff2abf
@ -325,7 +325,6 @@ func computeHMAC256(key, message []byte) []byte {
|
||||
func supportsV3(version string) error {
|
||||
// We'll split the minimum Tor version that's supported and the given
|
||||
// version in order to individually compare each number.
|
||||
requiredParts := strings.Split(MinTorVersion, ".")
|
||||
parts := strings.Split(version, ".")
|
||||
if len(parts) != 4 {
|
||||
return errors.New("version string is not of the format " +
|
||||
@ -338,22 +337,19 @@ func supportsV3(version string) error {
|
||||
build := strings.Split(parts[len(parts)-1], "-")
|
||||
parts[len(parts)-1] = build[0]
|
||||
|
||||
// Convert them each number from its string representation to integers
|
||||
// and check that they respect the minimum version.
|
||||
for i := range parts {
|
||||
n, err := strconv.Atoi(parts[i])
|
||||
if err != nil {
|
||||
// Ensure that each part of the version string corresponds to a number.
|
||||
for _, part := range parts {
|
||||
if _, err := strconv.Atoi(part); err != nil {
|
||||
return err
|
||||
}
|
||||
requiredN, err := strconv.Atoi(requiredParts[i])
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if n < requiredN {
|
||||
return fmt.Errorf("version %v below minimum version "+
|
||||
"supported %v", version, MinTorVersion)
|
||||
}
|
||||
// Once we've determined we have a proper version string of the format
|
||||
// major.minor.revision.build, we can just do a string comparison to
|
||||
// determine if it satisfies the minimum version supported.
|
||||
if version < MinTorVersion {
|
||||
return fmt.Errorf("version %v below minimum version supported "+
|
||||
"%v", version, MinTorVersion)
|
||||
}
|
||||
|
||||
return nil
|
||||
|
@ -28,6 +28,10 @@ func TestParseTorVersion(t *testing.T) {
|
||||
version: "0.4.3.6",
|
||||
valid: true,
|
||||
},
|
||||
{
|
||||
version: "0.4.0.5",
|
||||
valid: true,
|
||||
},
|
||||
{
|
||||
version: "1.3.3.6",
|
||||
valid: true,
|
||||
@ -56,6 +60,10 @@ func TestParseTorVersion(t *testing.T) {
|
||||
version: "0.1.3.6",
|
||||
valid: false,
|
||||
},
|
||||
{
|
||||
version: "0.0.6.3",
|
||||
valid: false,
|
||||
},
|
||||
}
|
||||
|
||||
for i, test := range tests {
|
||||
|
Loading…
Reference in New Issue
Block a user