[vlc-commits] [Git][videolan/vlc][master] 3 commits: stream_filter: hds: fix overflow before widen

Steve Lhomme (@robUx4) gitlab at videolan.org
Mon Oct 6 07:30:06 UTC 2025



Steve Lhomme pushed to branch master at VideoLAN / VLC


Commits:
e7490d6f by Tristan Matthews at 2025-10-06T07:11:30+00:00
stream_filter: hds: fix overflow before widen

Fixes CID 1666269

- - - - -
07c3f5e5 by Tristan Matthews at 2025-10-06T07:11:30+00:00
stream_filter: hds: avoid too many XML elements

While uint8_t wrap is well defined behavior, logically it's not desirable here.

Fixes CID 1666231

- - - - -
dff7446e by Tristan Matthews at 2025-10-06T07:11:30+00:00
stream_filter: hds: use NULL

- - - - -


1 changed file:

- modules/stream_filter/hds/hds.c


Changes:

=====================================
modules/stream_filter/hds/hds.c
=====================================
@@ -1029,7 +1029,7 @@ static chunk_t* generate_new_chunk(
         fragments_accum += (
             (hds_stream->segment_runs[srun_entry+1].first_segment -
              hds_stream->segment_runs[srun_entry].first_segment) *
-            hds_stream->segment_runs[srun_entry].fragments_per_segment );
+            (uint64_t)hds_stream->segment_runs[srun_entry].fragments_per_segment );
     }
 
     chunk->seg_num = segment;
@@ -1327,13 +1327,20 @@ static int parse_Manifest( stream_t *s, manifest_t *m )
         switch( type )
         {
         case XML_READER_STARTELEM:
-            if( current_element_idx == 0 && element_stack[current_element_idx] == 0 ) {
+            if( current_element_idx == 0 && element_stack[current_element_idx] == NULL ) {
                 if( !( element_stack[current_element_idx] = strdup( node ) ) )
                 {
                     free(media_id);
                     return VLC_ENOMEM;
                 }
             } else {
+                if( current_element_idx == MAX_XML_DEPTH - 1u )
+                {
+                    msg_Err( s, "Too many XML elements, quitting" );
+                    free(media_id);
+                    return VLC_EGENERIC;
+                }
+
                 if ( !( element_stack[++current_element_idx] = strdup( node ) ) )
                 {
                     free(media_id);
@@ -1353,7 +1360,7 @@ static int parse_Manifest( stream_t *s, manifest_t *m )
 
             free( current_element );
             current_element = NULL;
-            element_stack[current_element_idx--] = 0;
+            element_stack[current_element_idx--] = NULL;
             break;
         }
 



View it on GitLab: https://code.videolan.org/videolan/vlc/-/compare/acad78c260ae47406f9862b64ea2a2922652a092...dff7446eee974bd4ce8269963713e1df12fe2e23

-- 
View it on GitLab: https://code.videolan.org/videolan/vlc/-/compare/acad78c260ae47406f9862b64ea2a2922652a092...dff7446eee974bd4ce8269963713e1df12fe2e23
You're receiving this email because of your account on code.videolan.org.


VideoLAN code repository instance


More information about the vlc-commits mailing list