[vlc-commits] [Git][videolan/vlc][master] contrib: dvdnav: turn assert+exit into silent discard

Steve Lhomme (@robUx4) gitlab at videolan.org
Sun Jan 26 10:28:16 UTC 2025



Steve Lhomme pushed to branch master at VideoLAN / VLC


Commits:
ef256ba8 by Steve Lhomme at 2025-01-26T09:45:00+00:00
contrib: dvdnav: turn assert+exit into silent discard

This fixes playback on some bogus DVDs.

- - - - -


3 changed files:

- + contrib/src/dvdnav/0001-play-avoid-assert-and-exit-and-bogus-PG-link.patch
- + contrib/src/dvdnav/0002-play-avoid-assert-and-exit-and-bogus-Cell-link.patch
- contrib/src/dvdnav/rules.mak


Changes:

=====================================
contrib/src/dvdnav/0001-play-avoid-assert-and-exit-and-bogus-PG-link.patch
=====================================
@@ -0,0 +1,30 @@
+From ff8676289c227d03293f63152d327b2a16775eea Mon Sep 17 00:00:00 2001
+From: Steve Lhomme <robux4 at ycbcr.xyz>
+Date: Fri, 24 Jan 2025 13:34:52 +0100
+Subject: [PATCH 1/2] play: avoid assert and exit and bogus PG link
+
+Just return LinkNoLink.
+---
+ src/vm/play.c | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/src/vm/play.c b/src/vm/play.c
+index 8830883..e5d0e72 100644
+--- a/src/vm/play.c
++++ b/src/vm/play.c
+@@ -177,7 +177,11 @@ link_t play_PG(vm_t *vm) {
+     Log3(vm, "play_PG: (vm->state).pgN (%i) > pgc->nr_of_programs (%i)",
+             (vm->state).pgN, (vm->state).pgc->nr_of_programs );
+ #endif
+-    assert((vm->state).pgN == (vm->state).pgc->nr_of_programs + 1);
++    if((vm->state).pgN > (vm->state).pgc->nr_of_programs + 1) {
++      /* bogus link, ignore it */
++      link_t link_values = { LinkNoLink, 0, 0, 0 };
++      return link_values;
++    }
+     return play_PGC_post(vm);
+   }
+ 
+-- 
+2.45.0.windows.1
+


=====================================
contrib/src/dvdnav/0002-play-avoid-assert-and-exit-and-bogus-Cell-link.patch
=====================================
@@ -0,0 +1,30 @@
+From 43d76f9a0136fb244662e59876d87c7256df27c4 Mon Sep 17 00:00:00 2001
+From: Steve Lhomme <robux4 at ycbcr.xyz>
+Date: Fri, 24 Jan 2025 13:39:11 +0100
+Subject: [PATCH 2/2] play: avoid assert and exit and bogus Cell link
+
+Just return LinkNoLink.
+---
+ src/vm/play.c | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/src/vm/play.c b/src/vm/play.c
+index e5d0e72..a9d99fa 100644
+--- a/src/vm/play.c
++++ b/src/vm/play.c
+@@ -203,7 +203,11 @@ link_t play_Cell(vm_t *vm) {
+     Log3(vm, "(vm->state).cellN (%i) > pgc->nr_of_cells (%i)",
+             (vm->state).cellN, (vm->state).pgc->nr_of_cells );
+ #endif
+-    assert((vm->state).cellN == (vm->state).pgc->nr_of_cells + 1);
++    if((vm->state).cellN == (vm->state).pgc->nr_of_cells + 1) {
++      /* bogus link, ignore it */
++      link_t link_values = { LinkNoLink, 0, 0, 0 };
++      return link_values;
++    }
+     return play_PGC_post(vm);
+   }
+ 
+-- 
+2.45.0.windows.1
+


=====================================
contrib/src/dvdnav/rules.mak
=====================================
@@ -23,6 +23,9 @@ dvdnav: libdvdnav-$(LIBDVDNAV_VERSION).tar.bz2 .sum-dvdnav
 	$(UNPACK)
 	$(call update_autoconfig,.)
 	$(APPLY) $(SRC)/dvdnav/0001-configure-don-t-use-ms-style-packing.patch
+	# turn asserts/exit into silent discard
+	$(APPLY) $(SRC)/dvdnav/0001-play-avoid-assert-and-exit-and-bogus-PG-link.patch
+	$(APPLY) $(SRC)/dvdnav/0002-play-avoid-assert-and-exit-and-bogus-Cell-link.patch
 	$(call pkg_static,"misc/dvdnav.pc.in")
 	$(MOVE)
 



View it on GitLab: https://code.videolan.org/videolan/vlc/-/commit/ef256ba8acde2a159b58ead454a5f8a96824e521

-- 
View it on GitLab: https://code.videolan.org/videolan/vlc/-/commit/ef256ba8acde2a159b58ead454a5f8a96824e521
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