]> granicus.if.org Git - handbrake/commitdiff
Don't crash during scan when a DVD contains an invalid PTT or PGC index. (Bug & fix...
authorvan <vanj.hb@gmail.com>
Sun, 12 Apr 2009 06:59:40 +0000 (06:59 +0000)
committervan <vanj.hb@gmail.com>
Sun, 12 Apr 2009 06:59:40 +0000 (06:59 +0000)
git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@2319 b64f7644-9d1e-0410-96f1-a4d463321fa5

libhb/dvd.c

index 358cb552b44326195c3f9db27d73e611375040cd..479157e8ab40e60998bae13f310f73ce6c00947b 100644 (file)
@@ -203,9 +203,19 @@ hb_title_t * hb_dvd_title_scan( hb_dvd_t * d, int t )
 
     /* Position of the title in the VTS */
     title->ttn = d->vmg->tt_srpt->title[t-1].vts_ttn;
+    if ( title->ttn < 1 || title->ttn > vts->vts_ptt_srpt->nr_of_srpts )
+    {
+        hb_error( "invalid VTS PTT offset %d for title %d, skipping", title->ttn, t );
+        goto fail;
+    }
 
     /* Get pgc */
     pgc_id = vts->vts_ptt_srpt->title[title->ttn-1].ptt[0].pgcn;
+    if ( pgc_id < 1 || pgc_id > vts->vts_pgcit->nr_of_pgci_srp )
+    {
+        hb_error( "invalid PGC ID %d for title %d, skipping", pgc_id, t );
+        goto fail;
+    }
     pgn    = vts->vts_ptt_srpt->title[title->ttn-1].ptt[0].pgn;
     d->pgc = vts->vts_pgcit->pgci_srp[pgc_id-1].pgc;