X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavformat%2Frtspdec.c;h=43dcb47ac18755696b2a3a033c95a608e27a7708;hb=342c43d154e586bc022c86b168fe8d36f69da9d3;hp=a125cc6e9e5430ff57dccebfd8db63d7e5db3b28;hpb=c4ef6a3e4ba50b7e3746a46b51c2f8d16e8cba7b;p=ffmpeg diff --git a/libavformat/rtspdec.c b/libavformat/rtspdec.c index a125cc6e9e5..43dcb47ac18 100644 --- a/libavformat/rtspdec.c +++ b/libavformat/rtspdec.c @@ -29,6 +29,7 @@ #include "internal.h" #include "network.h" #include "os_support.h" +#include "rtpproto.h" #include "rtsp.h" #include "rdt.h" #include "url.h" @@ -76,8 +77,8 @@ static inline int read_line(AVFormatContext *s, char *rbuf, const int rbufsize, do { ret = ffurl_read_complete(rt->rtsp_hd, rbuf + idx, 1); - if (ret < 0) - return ret; + if (ret <= 0) + return ret ? ret : AVERROR_EOF; if (rbuf[idx] == '\r') { /* Ignore */ } else if (rbuf[idx] == '\n') { @@ -436,7 +437,7 @@ static inline int parse_command_line(AVFormatContext *s, const char *line, if (*methodcode == ANNOUNCE) { av_log(s, AV_LOG_INFO, "Updating control URI to %s\n", uri); - strcpy(rt->control_uri, uri); + av_strlcpy(rt->control_uri, uri, sizeof(rt->control_uri)); } } @@ -621,6 +622,10 @@ static int rtsp_listen(AVFormatContext *s) /* ff_url_join. No authorization by now (NULL) */ ff_url_join(rt->control_uri, sizeof(rt->control_uri), "rtsp", NULL, host, port, "%s", path); + + if (port < 0) + port = RTSP_DEFAULT_PORT; + /* Create TCP connection */ ff_url_join(tcpname, sizeof(tcpname), "tcp", NULL, host, port, "?listen&listen_timeout=%d", rt->initial_timeout * 1000); @@ -919,7 +924,7 @@ static const AVClass rtsp_demuxer_class = { AVInputFormat ff_rtsp_demuxer = { .name = "rtsp", - .long_name = NULL_IF_CONFIG_SMALL("RTSP input format"), + .long_name = NULL_IF_CONFIG_SMALL("RTSP input"), .priv_data_size = sizeof(RTSPState), .read_probe = rtsp_probe, .read_header = rtsp_read_header,