summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHarry Sintonen <sintonen@iki.fi>2020-11-03 03:36:56 +0200
committerDaniel Stenberg <daniel@haxx.se>2020-11-04 08:14:01 +0100
commitadb0fcfab238ac6858ade3b9b5cc332fa0f60dfd (patch)
treeffa568ca1756f7a9e55f0aedfd9a4d3547dd46cd
parent76140ecfde258b9d397ad660c7dc671f0b0ff9ce (diff)
downloadcurl-adb0fcfab238ac6858ade3b9b5cc332fa0f60dfd.tar.gz
rtsp: fixed Session ID comparison to refuse prefix
Closes #6161
-rw-r--r--lib/rtsp.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/lib/rtsp.c b/lib/rtsp.c
index 46c3c4f8f..93aac0f20 100644
--- a/lib/rtsp.c
+++ b/lib/rtsp.c
@@ -786,9 +786,18 @@ CURLcode Curl_rtsp_parseheader(struct connectdata *conn,
failf(data, "Got a blank Session ID");
}
else if(data->set.str[STRING_RTSP_SESSION_ID]) {
+ char *end;
+ size_t idlen;
+
+ /* Find the end of Session ID */
+ end = start + 1;
+ while(*end && !ISSPACE(*end))
+ end++;
+ idlen = end - start;
+
/* If the Session ID is set, then compare */
- if(strncmp(start, data->set.str[STRING_RTSP_SESSION_ID],
- strlen(data->set.str[STRING_RTSP_SESSION_ID])) != 0) {
+ if(strlen(data->set.str[STRING_RTSP_SESSION_ID]) != idlen ||
+ strncmp(start, data->set.str[STRING_RTSP_SESSION_ID], idlen) != 0) {
failf(data, "Got RTSP Session ID Line [%s], but wanted ID [%s]",
start, data->set.str[STRING_RTSP_SESSION_ID]);
return CURLE_RTSP_SESSION_ERROR;