avformat/dvdvideodec: check the length of a NAV packet when reading titles

Some discs present titles with bogus NAV packets. We apply this check
for menus and for title MPEG blocks, but we should also apply it
for NAV packets during title demuxing.

Signed-off-by: Marth64 <marth64@proxyid.net>
This commit is contained in:
Marth64 2024-10-07 18:04:58 -05:00
parent a1ae66c827
commit afc152f564
1 changed files with 7 additions and 0 deletions

View File

@ -740,6 +740,13 @@ static int dvdvideo_play_next_ps_block(AVFormatContext *s, DVDVideoPlaybackState
return AVERROR_EOF; return AVERROR_EOF;
} }
if (nav_len != DVDVIDEO_BLOCK_SIZE) {
av_log(s, AV_LOG_ERROR, "Invalid NAV packet size (expected=%d actual=%d)\n",
DVDVIDEO_BLOCK_SIZE, nav_len);
return AVERROR_INVALIDDATA;
}
e_pci = dvdnav_get_current_nav_pci(state->dvdnav); e_pci = dvdnav_get_current_nav_pci(state->dvdnav);
e_dsi = dvdnav_get_current_nav_dsi(state->dvdnav); e_dsi = dvdnav_get_current_nav_dsi(state->dvdnav);