rtp: Fix rtp_port reading.

pa_atou() return value was not checked, and the cast of a
16-bit variable pointer to a 32-bit variable pointer could
corrupt cseq.
This commit is contained in:
Tanu Kaskinen 2012-03-29 16:03:59 +03:00 committed by Tanu Kaskinen
parent b1303e6d92
commit 82e44a9f45

View file

@ -143,9 +143,17 @@ static void headers_read(pa_rtsp_client *c) {
/* Now parse out the server port component of the response. */
while ((token = pa_split(c->transport, delimiters, &token_state))) {
if ((pc = strstr(token, "="))) {
if ((pc = strchr(token, '='))) {
if (0 == strncmp(token, "server_port", 11)) {
pa_atou(pc+1, (uint32_t*)(&c->rtp_port));
uint32_t p;
if (pa_atou(pc + 1, &p) < 0 || p <= 0 || p > 0xffff) {
pa_log("Invalid SETUP response (invalid server_port).");
pa_xfree(token);
return;
}
c->rtp_port = p;
pa_xfree(token);
break;
}