diff options
author | Harry Sintonen <sintonen@iki.fi> | 2020-11-03 03:36:56 +0200 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2020-11-04 08:14:01 +0100 |
commit | adb0fcfab238ac6858ade3b9b5cc332fa0f60dfd (patch) | |
tree | ffa568ca1756f7a9e55f0aedfd9a4d3547dd46cd | |
parent | 76140ecfde258b9d397ad660c7dc671f0b0ff9ce (diff) | |
download | curl-adb0fcfab238ac6858ade3b9b5cc332fa0f60dfd.tar.gz |
rtsp: fixed Session ID comparison to refuse prefix
Closes #6161
-rw-r--r-- | lib/rtsp.c | 13 |
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; |