PR #24152 opened by mkver
URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/24152
Patch URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/24152.patch


>From 08d6b10bdf912f366932a72eb37ce929cabca77d Mon Sep 17 00:00:00 2001
From: Andreas Rheinhardt <[email protected]>
Date: Fri, 14 Aug 2026 22:40:52 +0200
Subject: [PATCH 1/2] avformat/whip: Avoid calling strlen multiple times

Also avoid zeroing the buffer unnecessarily, ff_data_to_hex()
also initialized it (including the terminating \0).

Signed-off-by: Andreas Rheinhardt <[email protected]>
---
 libavformat/whip.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/libavformat/whip.c b/libavformat/whip.c
index ae2c116a4d..a845f0c37c 100644
--- a/libavformat/whip.c
+++ b/libavformat/whip.c
@@ -791,7 +791,7 @@ static int exchange_sdp(AVFormatContext *s)
         goto end;
     }
 
-    if (!whip->sdp_offer || !strlen(whip->sdp_offer)) {
+    if (!whip->sdp_offer || !*whip->sdp_offer) {
         av_log(whip, AV_LOG_ERROR, "No offer to exchange\n");
         ret = AVERROR(EINVAL);
         goto end;
@@ -812,12 +812,13 @@ static int exchange_sdp(AVFormatContext *s)
     if (whip->timeout >= 0)
         av_dict_set_int(&opts, "timeout", whip->timeout, 0);
 
-    hex_data = av_mallocz(2 * strlen(whip->sdp_offer) + 1);
+    const size_t sdp_offer_len = strlen(whip->sdp_offer);
+    hex_data = av_malloc(2 * sdp_offer_len + 1);
     if (!hex_data) {
         ret = AVERROR(ENOMEM);
         goto end;
     }
-    ff_data_to_hex(hex_data, whip->sdp_offer, strlen(whip->sdp_offer), 0);
+    ff_data_to_hex(hex_data, whip->sdp_offer, sdp_offer_len, 0);
     av_dict_set(&opts, "post_data", hex_data, 0);
 
     ret = ffurl_open_whitelist(&whip_uc, s->url, AVIO_FLAG_READ_WRITE, 
&s->interrupt_callback,
-- 
2.52.0


>From 6d2344e78067f6f842bfed1ddd39239484254557 Mon Sep 17 00:00:00 2001
From: Andreas Rheinhardt <[email protected]>
Date: Fri, 14 Aug 2026 22:48:13 +0200
Subject: [PATCH 2/2] avformat/whip: Avoid allocation

Signed-off-by: Andreas Rheinhardt <[email protected]>
---
 libavformat/whip.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/libavformat/whip.c b/libavformat/whip.c
index a845f0c37c..cea9941878 100644
--- a/libavformat/whip.c
+++ b/libavformat/whip.c
@@ -819,7 +819,7 @@ static int exchange_sdp(AVFormatContext *s)
         goto end;
     }
     ff_data_to_hex(hex_data, whip->sdp_offer, sdp_offer_len, 0);
-    av_dict_set(&opts, "post_data", hex_data, 0);
+    av_dict_set(&opts, "post_data", hex_data, AV_DICT_DONT_STRDUP_VAL);
 
     ret = ffurl_open_whitelist(&whip_uc, s->url, AVIO_FLAG_READ_WRITE, 
&s->interrupt_callback,
         &opts, s->protocol_whitelist, s->protocol_blacklist, NULL);
@@ -877,7 +877,6 @@ end:
     ffurl_closep(&whip_uc);
     av_bprint_finalize(&bp, NULL);
     av_dict_free(&opts);
-    av_freep(&hex_data);
     return ret;
 }
 
-- 
2.52.0

_______________________________________________
ffmpeg-devel mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to