MM-67274: Fix panic in getBrowserVersion with empty User-Agent version (#35098) (#35133)

Automatic Merge
Этот коммит содержится в:
Mattermost Build
2026-01-30 12:53:37 +02:00
коммит произвёл GitHub
родитель e813c0e19e
Коммит 66fdb3f453
2 изменённых файлов: 290 добавлений и 194 удалений

Просмотреть файл

@@ -107,28 +107,23 @@ func getOSName(ua *uasurfer.UserAgent, userAgentString string) string {
return osNames[uasurfer.OSUnknown]
}
var versionPrefixes = []string{
"Mattermost Mobile/",
"Mattermost/",
"mmctl/",
"Franz/",
}
func getBrowserVersion(ua *uasurfer.UserAgent, userAgentString string) string {
if index := strings.Index(userAgentString, "Mattermost Mobile/"); index != -1 {
afterVersion := userAgentString[index+len("Mattermost Mobile/"):]
// MM-55320: limitStringLength prevents potential DOS caused by filling an unbounded string with junk data
return limitStringLength(strings.Fields(afterVersion)[0], maxUserAgentVersionLength)
for _, prefix := range versionPrefixes {
if index := strings.Index(userAgentString, prefix); index != -1 {
afterPrefix := userAgentString[index+len(prefix):]
if fields := strings.Fields(afterPrefix); len(fields) > 0 {
// MM-55320: limitStringLength prevents potential DOS caused by filling an unbounded string with junk data
return limitStringLength(fields[0], maxUserAgentVersionLength)
}
}
}
if index := strings.Index(userAgentString, "Mattermost/"); index != -1 {
afterVersion := userAgentString[index+len("Mattermost/"):]
return limitStringLength(strings.Fields(afterVersion)[0], maxUserAgentVersionLength)
}
if index := strings.Index(userAgentString, "mmctl/"); index != -1 {
afterVersion := userAgentString[index+len("mmctl/"):]
return limitStringLength(strings.Fields(afterVersion)[0], maxUserAgentVersionLength)
}
if index := strings.Index(userAgentString, "Franz/"); index != -1 {
afterVersion := userAgentString[index+len("Franz/"):]
return limitStringLength(strings.Fields(afterVersion)[0], maxUserAgentVersionLength)
}
return getUAVersion(ua.Browser.Version)
}