[vlc-commits] [Git][videolan/vlc][master] 3 commits: demux: ts: fix ATSC descriptor OOB read
Jean-Baptiste Kempf (@jbk)
gitlab at videolan.org
Fri Oct 23 20:49:34 UTC 2026
Jean-Baptiste Kempf pushed to branch master at VideoLAN / VLC
Commits:
b427bd77 by François Cartegnie at 2026-10-23T22:40:40+02:00
demux: ts: fix ATSC descriptor OOB read
refs #29940
- - - - -
e0d55c25 by François Cartegnie at 2026-10-23T22:40:40+02:00
demux: ts: fix leak on error of ATSC stt descriptor
- - - - -
0860cafc by François Cartegnie at 2026-10-23T22:40:40+02:00
demux: ts: fix potential ATSC NULL deref
- - - - -
1 changed file:
- modules/demux/mpeg/ts_psip.c
Changes:
=====================================
modules/demux/mpeg/ts_psip.c
=====================================
@@ -338,6 +338,9 @@ static vlc_epg_event_t * ATSC_CreateVLCEPGEvent( demux_t *p_demux, ts_psip_conte
#ifndef ATSC_DEBUG_EIT
VLC_UNUSED(p_demux);
#endif
+ if( !p_basectx->p_stt || !p_basectx->p_a65 )
+ return NULL;
+
char *psz_title = atsc_a65_Decode_multiple_string( p_basectx->p_a65,
p_evt->i_title, p_evt->i_title_length );
char *psz_shortdesc_text = NULL;
@@ -356,6 +359,8 @@ static vlc_epg_event_t * ATSC_CreateVLCEPGEvent( demux_t *p_demux, ts_psip_conte
{
const uint8_t *p_data = p_dr->p_data;
size_t i_data = p_dr->i_length;
+ if( i_data < 4 )
+ continue;
uint8_t i_ratings_count = p_dr->p_data[0] & 0x3F;
p_data++; i_data--;
for( ; i_ratings_count && i_data > 3; i_ratings_count-- )
@@ -541,10 +546,16 @@ static void ATSC_ETT_Callback( void *p_pid, dvbpsi_atsc_ett_t *p_ett )
demux_t *p_demux = (demux_t *) p_ett_pid->u.p_psip->p_ctx->p_handle->p_sys;
demux_sys_t *p_sys = p_demux->p_sys;
ts_pid_t *p_base_pid = GetPID(p_sys, ATSC_BASE_PID);
+ if( unlikely(p_base_pid->type != TYPE_PSIP ) )
+ {
+ dvbpsi_atsc_DeleteETT( p_ett );
+ return;
+ }
+
ts_psip_t *p_basepsip = p_base_pid->u.p_psip;
ts_psip_context_t *p_basectx = p_basepsip->p_ctx;
- if( p_ett->i_etm_id & 0x02 ) /* Event ETT */
+ if( (p_ett->i_etm_id & 0x02) && p_basectx->p_vct && p_basectx->p_mgt ) /* Event ETT */
{
ts_psip_context_t *p_ctx = p_ett_pid->u.p_psip->p_ctx;
uint16_t i_vchannel_id, i_event_id;
@@ -810,7 +821,7 @@ static void ATSC_STT_Callback( void *p_cb_basepid, dvbpsi_atsc_stt_t* p_stt )
{
msg_Err( p_demux, "Can't attach MGT decoder to pid %d", ATSC_BASE_PID );
ATSC_Detach_Dvbpsi_Decoders( p_handle );
- dvbpsi_atsc_DeleteSTT( p_ctx->p_stt );
+ dvbpsi_atsc_DeleteSTT( p_stt );
p_stt = NULL;
}
}
View it on GitLab: https://code.videolan.org/videolan/vlc/-/compare/ed4ca71a3a18a9788c8c830eaae5389ee08c7692...0860cafcd19d4dac5947024978bc74b57d223b42
--
View it on GitLab: https://code.videolan.org/videolan/vlc/-/compare/ed4ca71a3a18a9788c8c830eaae5389ee08c7692...0860cafcd19d4dac5947024978bc74b57d223b42
You're receiving this email because of your account on code.videolan.org. Manage all notifications: https://code.videolan.org/-/profile/notifications | Help: https://code.videolan.org/help
More information about the vlc-commits
mailing list