Improved checking of SIP URI parameters

This commit is contained in:
Juha Heinanen
2021-07-21 11:05:24 +03:00
parent c275d3cbd0
commit 66166e90e3
@@ -220,18 +220,26 @@ object Utils {
} }
private fun checkParam(param: String): Boolean { private fun checkParam(param: String): Boolean {
/* Todo: do proper check */
val nameValue = param.split("=") val nameValue = param.split("=")
if (nameValue.size == 1) if (nameValue.size == 1)
return true return checkParamChars(nameValue[0])
if (nameValue.size == 2) { if (nameValue.size == 2) {
if ((nameValue[0] == "transport") && if (nameValue[0] == "transport")
setOf("udp", "tcp", "tls", "wss").contains(nameValue[1].lowercase())) return setOf("udp", "tcp", "tls", "wss").contains(nameValue[1].lowercase())
return true return checkParamChars(nameValue[1])
} }
return false return false
} }
private fun checkParamChars(s: String): Boolean {
// Does not currently allow escaped characters
val allowed = "[]/:&+$-_.!~*'()"
for (c in s)
if (!allowed.contains(c) && !c.isLetterOrDigit())
return false
return true
}
fun paramValue(params: String, name: String): String { fun paramValue(params: String, name: String): String {
if (params == "") return "" if (params == "") return ""
for (param in params.split(";")) for (param in params.split(";"))