Improved checking of SIP URI parameters
This commit is contained in:
@@ -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(";"))
|
||||||
|
|||||||
Reference in New Issue
Block a user