mirror of
				https://github.com/caddyserver/caddy.git
				synced 2025-11-03 19:17:29 -05:00 
			
		
		
		
	Merge pull request #1779 from mholt/mitm-panic
mitm: Fix out of bounds error when checking software version in UA
This commit is contained in:
		
						commit
						76a282718d
					
				@ -112,6 +112,8 @@ func getVersion(ua, softwareName string) float64 {
 | 
			
		||||
	end := strings.Index(ua[start:], " ")
 | 
			
		||||
	if end < 0 {
 | 
			
		||||
		end = len(ua)
 | 
			
		||||
	} else {
 | 
			
		||||
		end += start
 | 
			
		||||
	}
 | 
			
		||||
	strVer := strings.Replace(ua[start:end], "-", "", -1)
 | 
			
		||||
	firstDot := strings.Index(strVer, ".")
 | 
			
		||||
 | 
			
		||||
@ -352,3 +352,48 @@ func TestHeuristicFunctionsAndHandler(t *testing.T) {
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func TestGetVersion(t *testing.T) {
 | 
			
		||||
	for i, test := range []struct {
 | 
			
		||||
		UserAgent    string
 | 
			
		||||
		SoftwareName string
 | 
			
		||||
		Version      float64
 | 
			
		||||
	}{
 | 
			
		||||
		{
 | 
			
		||||
			UserAgent:    "Mozilla/5.0 (Windows NT 6.1; rv:45.0) Gecko/20100101 Firefox/45.0",
 | 
			
		||||
			SoftwareName: "Firefox",
 | 
			
		||||
			Version:      45.0,
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			UserAgent:    "Mozilla/5.0 (Windows NT 6.1; rv:45.0) Gecko/20100101 Firefox/45.0 more_stuff_here",
 | 
			
		||||
			SoftwareName: "Firefox",
 | 
			
		||||
			Version:      45.0,
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			UserAgent:    "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.79 Safari/537.36 Edge/14.14393",
 | 
			
		||||
			SoftwareName: "Safari",
 | 
			
		||||
			Version:      537.36,
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			UserAgent:    "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.79 Safari/537.36 Edge/14.14393",
 | 
			
		||||
			SoftwareName: "Chrome",
 | 
			
		||||
			Version:      51.0270479,
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			UserAgent:    "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.79 Safari/537.36 Edge/14.14393",
 | 
			
		||||
			SoftwareName: "Mozilla",
 | 
			
		||||
			Version:      5.0,
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			UserAgent:    "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.79 Safari/537.36 Edge/14.14393",
 | 
			
		||||
			SoftwareName: "curl",
 | 
			
		||||
			Version:      -1,
 | 
			
		||||
		},
 | 
			
		||||
	} {
 | 
			
		||||
		actual := getVersion(test.UserAgent, test.SoftwareName)
 | 
			
		||||
		if actual != test.Version {
 | 
			
		||||
			t.Errorf("Test [%d]: Expected version=%f, got version=%f for %s in '%s'",
 | 
			
		||||
				i, test.Version, actual, test.SoftwareName, test.UserAgent)
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user