Merge pull request #3038 from wpaulino/tor-version-check
tor: use string comparison to check min supported version
This commit is contained in:
commit
44eb2320c7
@ -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 {
|
||||
return err
|
||||
}
|
||||
requiredN, err := strconv.Atoi(requiredParts[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
|
||||
}
|
||||
}
|
||||
|
||||
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