* [FFmpeg-devel] [PATCH 3/3] avformat/rtsp: check copy_tls_opts_dict
2025-07-08 15:09 [FFmpeg-devel] [PATCH 1/3] avformat/rtsp: fix misleading indentation Marvin Scholz
2025-07-08 15:09 ` [FFmpeg-devel] [PATCH 2/3] avformat/rtsp: use av_unreachable Marvin Scholz
@ 2025-07-08 15:09 ` Marvin Scholz
2025-07-10 10:51 ` [FFmpeg-devel] [PATCH 1/3] avformat/rtsp: fix misleading indentation Marvin Scholz
2 siblings, 0 replies; 4+ messages in thread
From: Marvin Scholz @ 2025-07-08 15:09 UTC (permalink / raw)
To: ffmpeg-devel
Properly check av_dict_set return values and propagate them to
the caller so they can be handled.
---
libavformat/rtsp.c | 43 +++++++++++++++++++++++++++++++++----------
1 file changed, 33 insertions(+), 10 deletions(-)
diff --git a/libavformat/rtsp.c b/libavformat/rtsp.c
index c6203a07de..519fe29a22 100644
--- a/libavformat/rtsp.c
+++ b/libavformat/rtsp.c
@@ -143,18 +143,29 @@ static AVDictionary *map_to_opts(RTSPState *rt)
return opts;
}
+#define ERR_RET(c) \
+ do { \
+ int ret = c; \
+ if (ret < 0) \
+ return ret; \
+ } while (0)
+
/**
* Add the TLS options of the given RTSPState to the dict
*/
-static void copy_tls_opts_dict(RTSPState *rt, AVDictionary **dict)
+static int copy_tls_opts_dict(RTSPState *rt, AVDictionary **dict)
{
- av_dict_set_int(dict, "tls_verify", rt->tls_opts.verify, 0);
- av_dict_set(dict, "ca_file", rt->tls_opts.ca_file, 0);
- av_dict_set(dict, "cert_file", rt->tls_opts.cert_file, 0);
- av_dict_set(dict, "key_file", rt->tls_opts.key_file, 0);
- av_dict_set(dict, "verifyhost", rt->tls_opts.host, 0);
+ ERR_RET(av_dict_set_int(dict, "tls_verify", rt->tls_opts.verify, 0));
+ ERR_RET(av_dict_set(dict, "ca_file", rt->tls_opts.ca_file, 0));
+ ERR_RET(av_dict_set(dict, "cert_file", rt->tls_opts.cert_file, 0));
+ ERR_RET(av_dict_set(dict, "key_file", rt->tls_opts.key_file, 0));
+ ERR_RET(av_dict_set(dict, "verifyhost", rt->tls_opts.host, 0));
+
+ return 0;
}
+#undef ERR_RET
+
static void get_word_until_chars(char *buf, int buf_size,
const char *sep, const char **pp)
{
@@ -1837,8 +1848,14 @@ redirect:
AVDictionary *options = NULL;
av_dict_set_int(&options, "timeout", rt->stimeout, 0);
- if (https_tunnel)
- copy_tls_opts_dict(rt, &options);
+ if (https_tunnel) {
+ int ret = copy_tls_opts_dict(rt, &options);
+ if (ret < 0) {
+ av_dict_free(&options);
+ err = ret;
+ goto fail;
+ }
+ }
ff_url_join(httpname, sizeof(httpname), https_tunnel ? "https" : "http", auth, host, port, "%s", path);
snprintf(sessioncookie, sizeof(sessioncookie), "%08x%08x",
@@ -1924,8 +1941,14 @@ redirect:
int ret;
/* open the tcp connection */
AVDictionary *proto_opts = NULL;
- if (strcmp("tls", lower_rtsp_proto) == 0)
- copy_tls_opts_dict(rt, &proto_opts);
+ if (strcmp("tls", lower_rtsp_proto) == 0) {
+ ret = copy_tls_opts_dict(rt, &proto_opts);
+ if (ret < 0) {
+ av_dict_free(&proto_opts);
+ err = ret;
+ goto fail;
+ }
+ }
ff_url_join(tcpname, sizeof(tcpname), lower_rtsp_proto, NULL,
host, port,
--
2.39.5 (Apple Git-154)
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [FFmpeg-devel] [PATCH 1/3] avformat/rtsp: fix misleading indentation
2025-07-08 15:09 [FFmpeg-devel] [PATCH 1/3] avformat/rtsp: fix misleading indentation Marvin Scholz
2025-07-08 15:09 ` [FFmpeg-devel] [PATCH 2/3] avformat/rtsp: use av_unreachable Marvin Scholz
2025-07-08 15:09 ` [FFmpeg-devel] [PATCH 3/3] avformat/rtsp: check copy_tls_opts_dict Marvin Scholz
@ 2025-07-10 10:51 ` Marvin Scholz
2 siblings, 0 replies; 4+ messages in thread
From: Marvin Scholz @ 2025-07-10 10:51 UTC (permalink / raw)
To: ffmpeg-devel
On 8 Jul 2025, at 17:09, Marvin Scholz wrote:
> ---
> libavformat/rtsp.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/libavformat/rtsp.c b/libavformat/rtsp.c
> index 8d360b375f..6201f09136 100644
> --- a/libavformat/rtsp.c
> +++ b/libavformat/rtsp.c
> @@ -602,8 +602,8 @@ static void sdp_parse_line(AVFormatContext *s, SDPParseState *s1,
> if (proto[0] == '\0') {
> /* relative control URL */
> if (rtsp_st->control_url[strlen(rtsp_st->control_url)-1]!='/')
> - av_strlcat(rtsp_st->control_url, "/",
> - sizeof(rtsp_st->control_url));
> + av_strlcat(rtsp_st->control_url, "/",
> + sizeof(rtsp_st->control_url));
> av_strlcat(rtsp_st->control_url, p,
> sizeof(rtsp_st->control_url));
> } else
> --
> 2.39.5 (Apple Git-154)
Planning to push this tomorrow, if there are no objections.
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
^ permalink raw reply [flat|nested] 4+ messages in thread