This is an automated email from the git hooks/post-receive script.

Git pushed a commit to branch release/6.1
in repository ffmpeg.

commit 6c395546f0d80200bab1f7c2ba11e02c2e59013b
Author:     Kacper Michajłow <[email protected]>
AuthorDate: Sun Mar 17 03:36:16 2024 +0100
Commit:     Michael Niedermayer <[email protected]>
CommitDate: Sat Jun 20 17:42:28 2026 +0200

    avformat/hls: update current segment reference before use
    
    It may be invalidated by the time it is used.
    
    Fixes use after free when accessing current segment.
    
    Fixes: #10825
    Signed-off-by: J. Dekker <[email protected]>
    (cherry picked from commit b2b23f353aa1d4f88bcf00646bf952f0f7f8b033)
    Signed-off-by: Michael Niedermayer <[email protected]>
---
 libavformat/hls.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/libavformat/hls.c b/libavformat/hls.c
index 97052b7354..f98cc67660 100644
--- a/libavformat/hls.c
+++ b/libavformat/hls.c
@@ -2166,6 +2166,7 @@ static int hls_read_header(AVFormatContext *s)
          * If encryption scheme is SAMPLE-AES and audio setup information is 
present in external audio track,
          * use that information to find the media format, otherwise probe 
input data
          */
+        seg = current_segment(pls);
         if (seg && seg->key_type == KEY_SAMPLE_AES && pls->is_id3_timestamped 
&&
             pls->audio_setup_info.codec_id != AV_CODEC_ID_NONE) {
             void *iter = NULL;
@@ -2197,6 +2198,7 @@ static int hls_read_header(AVFormatContext *s)
             av_free(url);
         }
 
+        seg = current_segment(pls);
         if (seg && seg->key_type == KEY_SAMPLE_AES) {
             if (strstr(in_fmt->name, "mov")) {
                 char key[33];
@@ -2243,6 +2245,7 @@ static int hls_read_header(AVFormatContext *s)
          * on us if they want to.
          */
         if (pls->is_id3_timestamped || (pls->n_renditions > 0 && 
pls->renditions[0]->type == AVMEDIA_TYPE_AUDIO)) {
+            seg = current_segment(pls);
             if (seg && seg->key_type == KEY_SAMPLE_AES && 
pls->audio_setup_info.setup_data_length > 0 &&
                 pls->ctx->nb_streams == 1)
                 ret = ff_hls_senc_parse_audio_setup_info(pls->ctx->streams[0], 
&pls->audio_setup_info);

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

Reply via email to