Hello community,

here is the log from the commit of package libdvdread for openSUSE:Factory 
checked in at 2018-01-28 20:29:45
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libdvdread (Old)
 and      /work/SRC/openSUSE:Factory/.libdvdread.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "libdvdread"

Sun Jan 28 20:29:45 2018 rev:31 rq:570235 version:6.0.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/libdvdread/libdvdread.changes    2015-10-03 
20:29:43.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.libdvdread.new/libdvdread.changes       
2018-01-28 20:29:47.125085517 +0100
@@ -1,0 +2,15 @@
+Sat Jan 27 13:01:45 UTC 2018 - j.loren...@kabelmail.de
+
+- Update to version 6.0.0:
+  * restrict the number of symbols to be exposed to the
+    shared-object
+  * remove dvdinput_error function
+  * improve compatibility with some DVDs (notably the eOne ones)
+  * fix write after free in ifoFree functions
+  * fix possible buffer overflow in open
+  * additional checks on DVDReadBytes arguments
+  * fix leaks
+- Removed libdvdread-no-internal-crypto.patch because it's not
+  applied anymore.
+
+-------------------------------------------------------------------

Old:
----
  libdvdread-5.0.3.tar.bz2
  libdvdread-5.0.3.tar.bz2.asc
  libdvdread-no-internal-crypto.patch

New:
----
  libdvdread-6.0.0.tar.bz2
  libdvdread-6.0.0.tar.bz2.asc

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ libdvdread.spec ++++++
--- /var/tmp/diff_new_pack.5rqsYX/_old  2018-01-28 20:29:48.529019940 +0100
+++ /var/tmp/diff_new_pack.5rqsYX/_new  2018-01-28 20:29:48.541019379 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package libdvdread
 #
-# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
 
 
 Name:           libdvdread
-Version:        5.0.3
+Version:        6.0.0
 Release:        0
 Summary:        Library for Reading DVD Video Images
 License:        GPL-2.0+
@@ -27,7 +27,6 @@
 Source1:        
http://download.videolan.org/videolan/%{name}/%{version}/%{name}-%{version}.tar.bz2.asc
 Source2:        %{name}.keyring
 Source3:        baselibs.conf
-Patch2:         libdvdread-no-internal-crypto.patch
 BuildRequires:  autoconf
 BuildRequires:  automake
 BuildRequires:  libtool
@@ -61,7 +60,6 @@
 
 %prep
 %setup -q
-#patch2
 
 %build
 autoreconf -fiv

++++++ libdvdread-5.0.3.tar.bz2 -> libdvdread-6.0.0.tar.bz2 ++++++
++++ 3219 lines of diff (skipped)
++++    retrying with extended exclude list
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/libdvdread-5.0.3/ChangeLog new/libdvdread-6.0.0/ChangeLog
--- old/libdvdread-5.0.3/ChangeLog      2015-03-25 14:58:27.000000000 +0100
+++ new/libdvdread-6.0.0/ChangeLog      2018-01-14 10:46:08.000000000 +0100
@@ -1,3 +1,201 @@
+commit 95fdbe8337d2ff31dcfb68f35f3e4441dc27d92f
+Author: Jean-Baptiste Kempf <j...@videolan.org>
+Date:   Sun Jan 14 10:45:31 2018 +0100
+
+    Update NEWS
+
+commit 230d8c8140316f1633cb48c11870938d5784b5b7
+Author: Pierre Lamot <pie...@videolabs.io>
+Date:   Tue Jan 9 15:52:17 2018 +0100
+
+    Don't abort if PGCN or PCN == 0 when reading VTS_PTT_SRPT
+    
+    Signed-off-by: Jean-Baptiste Kempf <j...@videolan.org>
+
+commit 26cc345d57a2660fe2bfdb25be099ede233d7d48
+Author: Pierre Lamot <pie...@videolabs.io>
+Date:   Tue Jan 9 15:52:16 2018 +0100
+
+    Update incomplete structures
+    
+    From the spec.
+    
+    Signed-off-by: Jean-Baptiste Kempf <j...@videolan.org>
+
+commit 22f0cd7398da14b85bdb20eef81309ad30ec8da8
+Author: Pierre Lamot <pie...@videolabs.io>
+Date:   Tue Jan 9 15:52:15 2018 +0100
+
+    Don't abort if PGC structure can't be read.
+    
+    Some DVD contains unused invalids PGC (ie: inaccessible location).
+    
+    Signed-off-by: Jean-Baptiste Kempf <j...@videolan.org>
+
+commit 7433fb130827ada0e09a6b123b8a1df4fdf6bb40
+Author: Pierre Lamot <pie...@videolabs.io>
+Date:   Tue Jan 9 15:52:14 2018 +0100
+
+    Provide compatibility with media having incomplete TT_SRPT and PTT_SRPT
+    
+    Some media don't provide the last byte field in  "Title Search Pointer 
Table"
+    (TT_SRPT) and "Video Title Set Part of Title Search Pointer Table"
+    (VST_PTT_SRPT)
+    
+    Signed-off-by: Jean-Baptiste Kempf <j...@videolan.org>
+
+commit 74853950580354f0fba0e8bbae643068da9c3fb7
+Author: Jean-Baptiste Kempf <j...@videolan.org>
+Date:   Mon Jan 8 18:28:22 2018 +0100
+
+    Update NEWS for 6.0
+
+commit 5ec409508803037dfa931591aef93851458d1d2a
+Author: Lawrence D'Oliveiro <l...@geek-central.gen.nz>
+Date:   Fri Feb 19 16:16:09 2016 +0100
+
+    Restrict Exported Symbols To Those Currently Declared In Public Includes
+    
+    The shared library currently exports the symbols “dvdinput_close”,
+    “dvdinput_open”, “dvdinput_read”, “dvdinput_seek”,
+    “dvdinput_setup” and “dvdinput_title”, even though these are not
+    currently declared in any of the public include files.
+    
+    This restricts the export-symbols-regex to stop exporting these.
+    
+    Signed-off-by: Jean-Baptiste Kempf <j...@videolan.org>
+
+commit 494311d309441846eae697f915b61d2980bfa69d
+Author: Petri Hintukainen <phint...@gmail.com>
+Date:   Wed Oct 14 20:49:55 2015 +0300
+
+    Remove unused dvdinput_error()
+
+commit d52ac0a705e6969862d94b94729854108b7eb4b4
+Author: Petri Hintukainen <phint...@gmail.com>
+Date:   Wed Oct 14 14:03:33 2015 +0300
+
+    Remove redundant redeclaration of InternalUDFReadBlocksRaw
+
+commit 54c4660e7592e6f8e30d205b117dfc9b1e3997be
+Author: Petri Hintukainen <phint...@gmail.com>
+Date:   Thu Sep 24 14:02:23 2015 +0300
+
+    dvdinput_close(): fix leak in error path
+    
+    Memory should be freed even if DVDCSS_close() or close() returns an error.
+    Error return value is only for diagnostics; those functions can't be 
called again.
+    => dvdinput_close() can't be called again.
+
+commit 32c6f60f29875a7ee05817ee81107bb5ca0ea7ae
+Author: Petri Hintukainen <phint...@gmail.com>
+Date:   Thu Sep 24 14:01:51 2015 +0300
+
+    Use NULL when comparing pointer
+
+commit 5e2ffa4bd2f260cd68e064ada27aa21b042f8856
+Author: Jean-Baptiste Kempf <j...@videolan.org>
+Date:   Wed Sep 9 12:19:22 2015 +0200
+
+    Update NEWS
+
+commit d056043f4ba26944163c404421077ebfe3c8c60f
+Author: Jean-Baptiste Kempf <j...@videolan.org>
+Date:   Wed Sep 9 12:17:46 2015 +0200
+
+    Next major version will be 6.0.0
+    
+    Bump version to 5.90.0 for now
+
+commit 511ac9c8199d7b604d6a65193fd2777b74fad776
+Author: Jean-Baptiste Kempf <j...@videolan.org>
+Date:   Wed Sep 9 09:51:03 2015 +0200
+
+    Prepare for 5.0.4
+
+commit 105aa319b085b3eb4f67de80cb41af27e0f2fe0f
+Author: Petri Hintukainen <phint...@gmail.com>
+Date:   Mon Sep 7 14:46:31 2015 +0300
+
+    configure: generate version.h
+    
+    Signed-off-by: Jean-Baptiste Kempf <j...@videolan.org>
+
+commit 752bbae6bc7b517f9819d182a2e3ddca44b112d8
+Author: Petri Hintukainen <phint...@gmail.com>
+Date:   Wed Sep 9 10:12:29 2015 +0300
+
+    DVDReadBytes(): Check that requested size fits in ssize_t
+    
+    Signed-off-by: Jean-Baptiste Kempf <j...@videolan.org>
+
+commit 1d4a5ceef8e32659ae61fff4244d346c9f3453aa
+Author: Petri Hintukainen <phint...@gmail.com>
+Date:   Wed Sep 9 10:11:16 2015 +0300
+
+    sprintf -> strcpy
+    
+    Signed-off-by: Jean-Baptiste Kempf <j...@videolan.org>
+
+commit 08d1ca695b55121bb0e7e82e0fa21028196141a5
+Author: Petri Hintukainen <phint...@gmail.com>
+Date:   Wed Sep 9 10:10:26 2015 +0300
+
+    Add const
+    
+    Signed-off-by: Jean-Baptiste Kempf <j...@videolan.org>
+
+commit 7247a1995bf8cb33fb716eab9dd57ad2a90a083e
+Author: Jean-Baptiste Kempf <j...@videolan.org>
+Date:   Tue Sep 1 15:40:18 2015 +0200
+
+    Next version will be 5.0.4 (+ NEWS)
+
+commit 46ef934304b3a326615ae6dafc63b337f2f2628f
+Author: Petri Hintukainen <phint...@gmail.com>
+Date:   Wed May 20 13:41:57 2015 +0300
+
+    Use calloc
+    
+    Remove redundant initializations to 0.
+    
+    Signed-off-by: Jean-Baptiste Kempf <j...@videolan.org>
+
+commit 75c0cae2f32be6d7b076818571341dde83c1771b
+Author: Petri Hintukainen <phint...@gmail.com>
+Date:   Wed May 20 13:41:38 2015 +0300
+
+    Use correct constant
+    
+    TITLES_MAX was used as length of string "/video_ts".
+    There's no relation between these two constants.
+    
+    Signed-off-by: Jean-Baptiste Kempf <j...@videolan.org>
+
+commit a0b8b3e4e1e95131430149c24c75d19fb8219087
+Author: Petri Hintukainen <phint...@gmail.com>
+Date:   Wed May 20 13:41:01 2015 +0300
+
+    Fix possible buffer overflow
+    
+    Signed-off-by: Jean-Baptiste Kempf <j...@videolan.org>
+
+commit 2b77f469eb511b8f43e8f9b10a3b57685ec1ff3c
+Author: Petri Hintukainen <phint...@gmail.com>
+Date:   Wed May 20 13:40:27 2015 +0300
+
+    Cosmetics
+    
+    Signed-off-by: Jean-Baptiste Kempf <j...@videolan.org>
+
+commit 4e269e52103a0422a3954ecc2f1901dec5fb4f0d
+Author: Petri Hintukainen <phint...@gmail.com>
+Date:   Sun Mar 29 22:21:31 2015 +0300
+
+    Fix write after free
+    
+    Signed-off-by: Jean-Baptiste Kempf <j...@videolan.org>
+
 commit 2b8f60f0c4efd85f17116a5443851d4bb4a288b7
 Author: Jean-Baptiste Kempf <j...@videolan.org>
 Date:   Wed Mar 25 14:55:05 2015 +0100
@@ -970,7 +1168,7 @@
     
     The memory is allocated in
     
-               if((cached_dir_base = malloc(dir_lba * DVD_VIDEO_LB_LEN + 
2048)) == NULL)
+            if((cached_dir_base = malloc(dir_lba * DVD_VIDEO_LB_LEN + 2048)) 
== NULL)
     
     and has to be freed before returning from the function.
     
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/libdvdread-5.0.3/Makefile.am new/libdvdread-6.0.0/Makefile.am
--- old/libdvdread-5.0.3/Makefile.am    2014-08-28 08:41:51.000000000 +0200
+++ new/libdvdread-6.0.0/Makefile.am    2016-05-19 22:49:19.000000000 +0200
@@ -1,6 +1,6 @@
 ACLOCAL_AMFLAGS = -Im4
 
-AM_CPPFLAGS = -I$(top_srcdir)/src $(CSS_CFLAGS)
+AM_CPPFLAGS = -I$(top_srcdir)/src -I$(top_builddir)/src/dvdread $(CSS_CFLAGS)
 
 dist_doc_DATA = AUTHORS ChangeLog COPYING NEWS README TODO
 
@@ -34,7 +34,7 @@
 libdvdread_la_LIBADD = $(CSS_LIBS)
 
 libdvdread_la_LDFLAGS = -version-info $(DVDREAD_LTVERSION) \
-       -export-symbols-regex "(^dvd.*|^nav.*|^ifo.*|^DVD.*|^UDF.*)"
+       -export-symbols-regex "(^dvdread.*|^nav.*|^ifo.*|^DVD.*|^UDF.*)"
 
 pkgincludedir = $(includedir)/dvdread
 pkginclude_HEADERS = \
@@ -46,7 +46,8 @@
        src/dvdread/ifo_types.h \
        src/dvdread/nav_print.h \
        src/dvdread/nav_read.h \
-       src/dvdread/nav_types.h
+       src/dvdread/nav_types.h \
+       src/dvdread/version.h
 
 pkgconfigdir = $(libdir)/pkgconfig
 pkgconfig_DATA = misc/dvdread.pc
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/libdvdread-5.0.3/NEWS new/libdvdread-6.0.0/NEWS
--- old/libdvdread-5.0.3/NEWS   2015-03-25 14:55:03.000000000 +0100
+++ new/libdvdread-6.0.0/NEWS   2018-01-14 10:45:26.000000000 +0100
@@ -1,10 +1,19 @@
+libdvdread (6.0.0)
+ * restrict the number of symbols to be exposed to the shared-object
+ * remove dvdinput_error function
+ * improve compatibility with some DVDs (notably the eOne ones)
+ * fix write after free in ifoFree functions
+ * fix possible buffer overflow in open
+ * additional checks on DVDReadBytes arguments
+ * fix leaks
+
 libdvdread (5.0.3)
- * Cache IFO and BUP files (only for ImageFiles) in order to reduce the number
+ * cache IFO and BUP files (only for ImageFiles) in order to reduce the number
    of read/seek access
- * Fix compilation warnings for OS/2
+ * fix compilation warnings for OS/2
 
 libdvdread (5.0.2)
- * Add DVDOpenStream to open a dvd from a set of callbacks
+ * add DVDOpenStream to open a dvd from a set of callbacks
 
 libdvdread (5.0.1)
  * support DragonFly BSD bswap
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/libdvdread-5.0.3/configure.ac new/libdvdread-6.0.0/configure.ac
--- old/libdvdread-5.0.3/configure.ac   2015-03-14 19:09:18.000000000 +0100
+++ new/libdvdread-6.0.0/configure.ac   2018-01-08 18:28:17.000000000 +0100
@@ -1,4 +1,11 @@
-AC_INIT(libdvdread, 5.0.3)
+dnl library version number
+m4_define([dvdread_major], 6)
+m4_define([dvdread_minor], 0)
+m4_define([dvdread_micro], 0)
+m4_define([dvdread_version],[dvdread_major.dvdread_minor.dvdread_micro])
+
+AC_INIT(libdvdread, dvdread_version)
+
 AC_CONFIG_SRCDIR([src/dvd_reader.c])
 
 AC_PREREQ(2.53)
@@ -105,6 +112,14 @@
   AC_DEFINE([UNUSED], [], [Unused parameter annotation])
 ])
 
+dnl export library version number
+DVDREAD_VERSION_MAJOR=dvdread_major()
+DVDREAD_VERSION_MINOR=dvdread_minor()
+DVDREAD_VERSION_MICRO=dvdread_micro()
+AC_SUBST(DVDREAD_VERSION_MAJOR)
+AC_SUBST(DVDREAD_VERSION_MINOR)
+AC_SUBST(DVDREAD_VERSION_MICRO)
+
 dnl ---------------------------------------------
 dnl Output configuration files
 dnl ---------------------------------------------
@@ -112,4 +127,5 @@
 Makefile
 doc/doxygen.cfg
 misc/dvdread.pc
+src/dvdread/version.h
 ])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/libdvdread-5.0.3/m4/libtool.m4 new/libdvdread-6.0.0/m4/libtool.m4
--- old/libdvdread-5.0.3/m4/libtool.m4  2015-03-14 19:08:05.000000000 +0100
+++ new/libdvdread-6.0.0/m4/libtool.m4  2018-01-17 22:26:04.000000000 +0100
@@ -728,7 +728,6 @@
     cat <<_LT_EOF >> "$cfgfile"
 #! $SHELL
 # Generated automatically by $as_me ($PACKAGE) $VERSION
-# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
 # NOTE: Changes made to this file will be lost: look at ltmain.sh.
 
 # Provide generalized library-building support services.
@@ -2887,6 +2886,18 @@
   dynamic_linker='GNU/Linux ld.so'
   ;;
 
+netbsdelf*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix 
${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='NetBSD ld.elf_so'
+  ;;
+
 netbsd*)
   version_type=sunos
   need_lib_prefix=no
@@ -3546,7 +3557,7 @@
   lt_cv_deplibs_check_method=pass_all
   ;;
 
-netbsd*)
+netbsd* | netbsdelf*-gnu)
   if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
     lt_cv_deplibs_check_method='match_pattern 
/lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
   else
@@ -4424,7 +4435,7 @@
            ;;
        esac
        ;;
-      netbsd*)
+      netbsd* | netbsdelf*-gnu)
        ;;
       *qnx* | *nto*)
         # QNX uses GNU C++, but need to define -shared option too, otherwise
@@ -4936,6 +4947,9 @@
       ;;
     esac
     ;;
+  linux* | k*bsd*-gnu | gnu*)
+    _LT_TAGVAR(link_all_deplibs, $1)=no
+    ;;
   *)
     _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | 
$global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
     ;;
@@ -4998,6 +5012,9 @@
   openbsd* | bitrig*)
     with_gnu_ld=no
     ;;
+  linux* | k*bsd*-gnu | gnu*)
+    _LT_TAGVAR(link_all_deplibs, $1)=no
+    ;;
   esac
 
   _LT_TAGVAR(ld_shlibs, $1)=yes
@@ -5252,7 +5269,7 @@
       fi
       ;;
 
-    netbsd*)
+    netbsd* | netbsdelf*-gnu)
       if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
        _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs 
$linker_flags -o $lib'
        wlarc=
@@ -5773,6 +5790,7 @@
        if test yes = "$lt_cv_irix_exported_symbol"; then
           _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs 
$deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && 
func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry 
$wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib'
        fi
+       _LT_TAGVAR(link_all_deplibs, $1)=no
       else
        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs 
$compiler_flags -soname $soname `test -n "$verstring" && func_echo_all 
"-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
        _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs 
$compiler_flags -soname $soname `test -n "$verstring" && func_echo_all 
"-set_version $verstring"` -update_registry $output_objdir/so_locations 
-exports_file $export_symbols -o $lib'
@@ -5794,7 +5812,7 @@
       esac
       ;;
 
-    netbsd*)
+    netbsd* | netbsdelf*-gnu)
       if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
        _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs 
$linker_flags'  # a.out
       else
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/libdvdread-5.0.3/src/dvd_input.c new/libdvdread-6.0.0/src/dvd_input.c
--- old/libdvdread-5.0.3/src/dvd_input.c        2015-01-28 17:17:27.000000000 
+0100
+++ new/libdvdread-6.0.0/src/dvd_input.c        2016-05-19 22:49:19.000000000 
+0200
@@ -35,7 +35,6 @@
 int         (*dvdinput_seek)  (dvd_input_t, int);
 int         (*dvdinput_title) (dvd_input_t, int);
 int         (*dvdinput_read)  (dvd_input_t, void *, int, int);
-char *      (*dvdinput_error) (dvd_input_t);
 
 #ifdef HAVE_DVDCSS_DVDCSS_H
 /* linking to libdvdcss */
@@ -46,18 +45,17 @@
 # define DVDcss_close   dvdcss_close
 # define DVDcss_seek    dvdcss_seek
 # define DVDcss_read    dvdcss_read
-# define DVDcss_error   dvdcss_error
 #else
 
 /* dlopening libdvdcss */
 # if defined(HAVE_DLFCN_H) && !defined(USING_BUILTIN_DLFCN)
 #  include <dlfcn.h>
 # else
-# if defined(WIN32)
+#   if defined(WIN32)
 /* Only needed on MINGW at the moment */
-#  include "../msvc/contrib/dlfcn.c"
+#    include "../msvc/contrib/dlfcn.c"
+#   endif
 # endif
-#endif
 
 typedef struct dvdcss_s *dvdcss_t;
 typedef struct dvdcss_stream_cb dvdcss_stream_cb;
@@ -66,7 +64,6 @@
 static int      (*DVDcss_close) (dvdcss_t);
 static int      (*DVDcss_seek)  (dvdcss_t, int, int);
 static int      (*DVDcss_read)  (dvdcss_t, void *, int, int);
-static char *   (*DVDcss_error) (dvdcss_t);
 #define DVDCSS_SEEK_KEY (1 << 1)
 #endif
 
@@ -107,7 +104,7 @@
                     NULL;
 #endif
   }
-  if(dev->dvdcss == 0) {
+  if(dev->dvdcss == NULL) {
     fprintf(stderr, "libdvdread: Could not open %s with libdvdcss.\n", target);
     free(dev);
     return NULL;
@@ -117,14 +114,6 @@
 }
 
 /**
- * return the last error message
- */
-static char *css_error(dvd_input_t dev)
-{
-  return DVDcss_error(dev->dvdcss);
-}
-
-/**
  * seek into the device.
  */
 static int css_seek(dvd_input_t dev, int blocks)
@@ -158,12 +147,9 @@
 
   ret = DVDcss_close(dev->dvdcss);
 
-  if(ret < 0)
-    return ret;
-
   free(dev);
 
-  return 0;
+  return ret;
 }
 
 /**
@@ -200,15 +186,6 @@
 }
 
 /**
- * return the last error message
- */
-static char *file_error(dvd_input_t dev UNUSED)
-{
-  /* use strerror(errno)? */
-  return (char *)"unknown error";
-}
-
-/**
  * seek into the device.
  */
 static int file_seek(dvd_input_t dev, int blocks)
@@ -278,12 +255,9 @@
 
   ret = close(dev->fd);
 
-  if(ret < 0)
-    return ret;
-
   free(dev);
 
-  return 0;
+  return ret;
 }
 
 
@@ -328,8 +302,6 @@
       dlsym(dvdcss_library, U_S "dvdcss_seek");
     DVDcss_read = (int (*)(dvdcss_t, void*, int, int))
       dlsym(dvdcss_library, U_S "dvdcss_read");
-    DVDcss_error = (char* (*)(dvdcss_t))
-      dlsym(dvdcss_library, U_S "dvdcss_error");
 
     if(dlsym(dvdcss_library, U_S "dvdcss_crack")) {
       fprintf(stderr,
@@ -339,7 +311,7 @@
       dlclose(dvdcss_library);
       dvdcss_library = NULL;
     } else if(!DVDcss_open || !DVDcss_close || !DVDcss_seek
-              || !DVDcss_read || !DVDcss_error) {
+              || !DVDcss_read) {
       fprintf(stderr,  "libdvdread: Missing symbols in %s, "
               "this shouldn't happen !\n", CSS_LIB);
       dlclose(dvdcss_library);
@@ -362,7 +334,6 @@
     dvdinput_seek  = css_seek;
     dvdinput_title = css_title;
     dvdinput_read  = css_read;
-    dvdinput_error = css_error;
     return 1;
 
   } else {
@@ -374,7 +345,6 @@
     dvdinput_seek  = file_seek;
     dvdinput_title = file_title;
     dvdinput_read  = file_read;
-    dvdinput_error = file_error;
     return 0;
   }
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/libdvdread-5.0.3/src/dvd_input.h new/libdvdread-6.0.0/src/dvd_input.h
--- old/libdvdread-5.0.3/src/dvd_input.h        2015-01-27 16:24:31.000000000 
+0100
+++ new/libdvdread-6.0.0/src/dvd_input.h        2016-05-19 22:49:19.000000000 
+0200
@@ -61,7 +61,6 @@
 extern int         (*dvdinput_seek)  (dvd_input_t, int);
 extern int         (*dvdinput_title) (dvd_input_t, int);
 extern int         (*dvdinput_read)  (dvd_input_t, void *, int, int);
-extern char *      (*dvdinput_error) (dvd_input_t);
 
 /**
  * Setup function accessed by dvd_reader.c.  Returns 1 if there is CSS support.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/libdvdread-5.0.3/src/dvd_reader.c new/libdvdread-6.0.0/src/dvd_reader.c
--- old/libdvdread-5.0.3/src/dvd_reader.c       2015-03-14 19:09:18.000000000 
+0100
+++ new/libdvdread-6.0.0/src/dvd_reader.c       2018-01-17 22:35:39.000000000 
+0100
@@ -124,10 +124,6 @@
   unsigned char *cache;
 };
 
-int InternalUDFReadBlocksRaw( const dvd_reader_t *device, uint32_t lb_number,
-                      size_t block_count, unsigned char *data,
-                      int encrypted );
-
 /**
  * Set the level of caching on udf
  * level = 0 (no caching)
@@ -173,7 +169,7 @@
   uint32_t start, len;
   int title;
 
-  char *nokeys_str = getenv("DVDREAD_NOKEYS");
+  const char *nokeys_str = getenv("DVDREAD_NOKEYS");
   if(nokeys_str != NULL)
     return 0;
 
@@ -249,18 +245,15 @@
     return NULL;
   }
 
-  dvd = malloc( sizeof( dvd_reader_t ) );
+  dvd = calloc( 1, sizeof( dvd_reader_t ) );
   if( !dvd ) {
     dvdinput_close(dev);
     return NULL;
   }
-  memset( dvd, 0, sizeof( dvd_reader_t ) );
   dvd->isImageFile = 1;
   dvd->dev = dev;
-  dvd->path_root = NULL;
 
   dvd->udfcache_level = DEFAULT_UDF_CACHE_LEVEL;
-  dvd->udfcache = NULL;
 
   if( have_css ) {
     /* Only if DVDCSS_METHOD = title, a bit if it's disc or if
@@ -269,7 +262,6 @@
 
     dvd->css_state = 1; /* Need key init. */
   }
-  dvd->css_title = 0;
 
   return dvd;
 }
@@ -278,20 +270,14 @@
 {
   dvd_reader_t *dvd;
 
-  dvd = malloc( sizeof( dvd_reader_t ) );
+  dvd = calloc( 1, sizeof( dvd_reader_t ) );
   if( !dvd ) return NULL;
-  dvd->isImageFile = 0;
-  dvd->dev = 0;
   dvd->path_root = strdup( path_root );
   if(!dvd->path_root) {
     free(dvd);
     return NULL;
   }
   dvd->udfcache_level = DEFAULT_UDF_CACHE_LEVEL;
-  dvd->udfcache = NULL;
-
-  dvd->css_state = 0; /* Only used in the UDF path */
-  dvd->css_title = 0; /* Only matters in the UDF path */
 
   return dvd;
 }
@@ -374,7 +360,7 @@
   if( ppath == NULL )
     goto DVDOpen_error;
 
-      path = strdup(ppath);
+  path = strdup(ppath);
   if( path == NULL )
     goto DVDOpen_error;
 
@@ -398,9 +384,9 @@
 
     /* maybe "host:port" url? try opening it with acCeSS library */
     if( strchr(path,':') ) {
-                    ret_val = DVDOpenImageFile( path, NULL, NULL, have_css );
-                    free(path);
-            return ret_val;
+      ret_val = DVDOpenImageFile( path, NULL, NULL, have_css );
+      free(path);
+      return ret_val;
     }
 
     /* If we can't stat the file, give up */
@@ -484,22 +470,23 @@
     }
 
 #if defined(_WIN32) || defined(__OS2__)
-    if(strlen(path_copy) > TITLES_MAX) {
-      if(!strcasecmp(&(path_copy[strlen( path_copy ) - TITLES_MAX]),
+    if( strlen( path_copy ) > 9 ) {
+      if( !strcasecmp( &(path_copy[ strlen( path_copy ) - 9 ]),
                        "\\video_ts"))
-        path_copy[strlen(path_copy) - (TITLES_MAX-1)] = '\0';
+        path_copy[ strlen( path_copy ) - (9-1) ] = '\0';
     }
 #endif
-    if( strlen( path_copy ) > TITLES_MAX ) {
-      if( !strcasecmp( &(path_copy[ strlen( path_copy ) - TITLES_MAX ]),
+    if( strlen( path_copy ) > 9 ) {
+      if( !strcasecmp( &(path_copy[ strlen( path_copy ) - 9 ]),
                        "/video_ts" ) ) {
-        path_copy[ strlen( path_copy ) - TITLES_MAX ] = '\0';
+        path_copy[ strlen( path_copy ) - 9 ] = '\0';
       }
     }
 
     if(path_copy[0] == '\0') {
-      path_copy[0] = '/';
-      path_copy[1] = '\0';
+      free( path_copy );
+      if( !(path_copy = strdup( "/" ) ) )
+        goto DVDOpen_error;
     }
 
 #if defined(__APPLE__)
@@ -651,7 +638,7 @@
 /**
  * Open an unencrypted file on a DVD image file.
  */
-static dvd_file_t *DVDOpenFileUDF( dvd_reader_t *dvd, char *filename,
+static dvd_file_t *DVDOpenFileUDF( dvd_reader_t *dvd, const char *filename,
                                    int do_cache )
 {
   uint32_t start, len;
@@ -663,18 +650,14 @@
     return NULL;
   }
 
-  dvd_file = malloc( sizeof( dvd_file_t ) );
+  dvd_file = calloc( 1, sizeof( dvd_file_t ) );
   if( !dvd_file ) {
     fprintf( stderr, "libdvdread:DVDOpenFileUDF:malloc failed\n" );
     return NULL;
   }
   dvd_file->dvd = dvd;
   dvd_file->lb_start = start;
-  dvd_file->seek_pos = 0;
-  memset( dvd_file->title_sizes, 0, sizeof( dvd_file->title_sizes ) );
-  memset( dvd_file->title_devs, 0, sizeof( dvd_file->title_devs ) );
   dvd_file->filesize = len / DVD_VIDEO_LB_LEN;
-  dvd_file->cache = NULL;
 
   /* Read the whole file in cache (unencrypted) if asked and if it doesn't
    * exceed 128KB */
@@ -759,7 +742,7 @@
 /**
  * Open an unencrypted file from a DVD directory tree.
  */
-static dvd_file_t *DVDOpenFilePath( dvd_reader_t *dvd, char *filename )
+static dvd_file_t *DVDOpenFilePath( dvd_reader_t *dvd, const char *filename )
 {
   char full_path[ PATH_MAX + 1 ];
   dvd_file_t *dvd_file;
@@ -778,19 +761,13 @@
     return NULL;
   }
 
-  dvd_file = malloc( sizeof( dvd_file_t ) );
+  dvd_file = calloc( 1, sizeof( dvd_file_t ) );
   if( !dvd_file ) {
     fprintf( stderr, "libdvdread:DVDOpenFilePath:dvd_file malloc failed\n" );
     dvdinput_close(dev);
     return NULL;
   }
   dvd_file->dvd = dvd;
-  dvd_file->lb_start = 0;
-  dvd_file->seek_pos = 0;
-  memset( dvd_file->title_sizes, 0, sizeof( dvd_file->title_sizes ) );
-  memset( dvd_file->title_devs, 0, sizeof( dvd_file->title_devs ) );
-  dvd_file->filesize = 0;
-  dvd_file->cache = NULL;
 
   if( stat( full_path, &fileinfo ) < 0 ) {
     fprintf( stderr, "libdvdread: Can't stat() %s.\n", filename );
@@ -812,23 +789,19 @@
   dvd_file_t *dvd_file;
 
   if( title == 0 ) {
-    sprintf( filename, "/VIDEO_TS/VIDEO_TS.VOB" );
+    strcpy( filename, "/VIDEO_TS/VIDEO_TS.VOB" );
   } else {
     sprintf( filename, "/VIDEO_TS/VTS_%02d_%d.VOB", title, menu ? 0 : 1 );
   }
   start = UDFFindFile( dvd, filename, &len );
   if( start == 0 ) return NULL;
 
-  dvd_file = malloc( sizeof( dvd_file_t ) );
+  dvd_file = calloc( 1, sizeof( dvd_file_t ) );
   if( !dvd_file ) return NULL;
   dvd_file->dvd = dvd;
   /*Hack*/ dvd_file->css_title = title << 1 | menu;
   dvd_file->lb_start = start;
-  dvd_file->seek_pos = 0;
-  memset( dvd_file->title_sizes, 0, sizeof( dvd_file->title_sizes ) );
-  memset( dvd_file->title_devs, 0, sizeof( dvd_file->title_devs ) );
   dvd_file->filesize = len / DVD_VIDEO_LB_LEN;
-  dvd_file->cache = NULL;
 
   /* Calculate the complete file size for every file in the VOBS */
   if( !menu ) {
@@ -862,22 +835,16 @@
   struct stat fileinfo;
   dvd_file_t *dvd_file;
 
-  dvd_file = malloc( sizeof( dvd_file_t ) );
+  dvd_file = calloc( 1, sizeof( dvd_file_t ) );
   if( !dvd_file ) return NULL;
   dvd_file->dvd = dvd;
   /*Hack*/ dvd_file->css_title = title << 1 | menu;
-  dvd_file->lb_start = 0;
-  dvd_file->seek_pos = 0;
-  memset( dvd_file->title_sizes, 0, sizeof( dvd_file->title_sizes ) );
-  memset( dvd_file->title_devs, 0, sizeof( dvd_file->title_devs ) );
-  dvd_file->filesize = 0;
-  dvd_file->cache = NULL;
 
   if( menu ) {
     dvd_input_t dev;
 
     if( title == 0 ) {
-      sprintf( filename, "VIDEO_TS.VOB" );
+      strcpy( filename, "VIDEO_TS.VOB" );
     } else {
       sprintf( filename, "VTS_%02i_0.VOB", title );
     }
@@ -945,7 +912,7 @@
   switch( domain ) {
   case DVD_READ_INFO_FILE:
     if( titlenum == 0 ) {
-      sprintf( filename, "/VIDEO_TS/VIDEO_TS.IFO" );
+      strcpy( filename, "/VIDEO_TS/VIDEO_TS.IFO" );
     } else {
       sprintf( filename, "/VIDEO_TS/VTS_%02i_0.IFO", titlenum );
     }
@@ -953,7 +920,7 @@
     break;
   case DVD_READ_INFO_BACKUP_FILE:
     if( titlenum == 0 ) {
-      sprintf( filename, "/VIDEO_TS/VIDEO_TS.BUP" );
+      strcpy( filename, "/VIDEO_TS/VIDEO_TS.BUP" );
     } else {
       sprintf( filename, "/VIDEO_TS/VTS_%02i_0.BUP", titlenum );
     }
@@ -1016,7 +983,7 @@
   int n;
 
   if( title == 0 )
-    sprintf( filename, "/VIDEO_TS/VIDEO_TS.VOB" );
+    strcpy( filename, "/VIDEO_TS/VIDEO_TS.VOB" );
   else
     sprintf( filename, "/VIDEO_TS/VTS_%02d_%d.VOB", title, menu ? 0 : 1 );
 
@@ -1062,7 +1029,7 @@
   int n;
 
   if( title == 0 )
-    sprintf( filename, "VIDEO_TS.VOB" );
+    strcpy( filename, "VIDEO_TS.VOB" );
   else
     sprintf( filename, "VTS_%02d_%d.VOB", title, menu ? 0 : 1 );
 
@@ -1121,14 +1088,14 @@
   switch( domain ) {
   case DVD_READ_INFO_FILE:
     if( titlenum == 0 )
-      sprintf( filename, "/VIDEO_TS/VIDEO_TS.IFO" );
+      strcpy( filename, "/VIDEO_TS/VIDEO_TS.IFO" );
     else
       sprintf( filename, "/VIDEO_TS/VTS_%02i_0.IFO", titlenum );
 
     break;
   case DVD_READ_INFO_BACKUP_FILE:
     if( titlenum == 0 )
-      sprintf( filename, "/VIDEO_TS/VIDEO_TS.BUP" );
+      strcpy( filename, "/VIDEO_TS/VIDEO_TS.BUP" );
     else
       sprintf( filename, "/VIDEO_TS/VTS_%02i_0.BUP", titlenum );
 
@@ -1383,7 +1350,7 @@
   int ret;
 
   /* Check arguments. */
-  if( dvd_file == NULL || data == NULL )
+  if( dvd_file == NULL || data == NULL || (ssize_t)byte_size < 0 )
     return -1;
 
   seek_sector = dvd_file->seek_pos / DVD_VIDEO_LB_LEN;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/libdvdread-5.0.3/src/dvd_udf.c new/libdvdread-6.0.0/src/dvd_udf.c
--- old/libdvdread-5.0.3/src/dvd_udf.c  2014-12-03 16:40:14.000000000 +0100
+++ new/libdvdread-6.0.0/src/dvd_udf.c  2015-09-09 09:48:14.000000000 +0200
@@ -794,7 +794,7 @@
   return part->valid;
 }
 
-uint32_t UDFFindFile( dvd_reader_t *device, char *filename,
+uint32_t UDFFindFile( dvd_reader_t *device, const char *filename,
                       uint32_t *filesize )
 {
   uint8_t LogBlock_base[ DVD_VIDEO_LB_LEN + 2048 ];
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/libdvdread-5.0.3/src/dvdread/dvd_reader.h 
new/libdvdread-6.0.0/src/dvdread/dvd_reader.h
--- old/libdvdread-5.0.3/src/dvdread/dvd_reader.h       2015-03-25 
14:32:32.000000000 +0100
+++ new/libdvdread-6.0.0/src/dvdread/dvd_reader.h       2016-05-19 
22:49:19.000000000 +0200
@@ -43,7 +43,7 @@
 /**
  * The current version.
  */
-#define DVDREAD_VERSION 50300
+#include "version.h"
 
 /**
  * The length of one Logical Block of a DVD.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/libdvdread-5.0.3/src/dvdread/dvd_udf.h 
new/libdvdread-6.0.0/src/dvdread/dvd_udf.h
--- old/libdvdread-5.0.3/src/dvdread/dvd_udf.h  2014-01-02 16:38:07.000000000 
+0100
+++ new/libdvdread-6.0.0/src/dvdread/dvd_udf.h  2015-09-09 09:48:14.000000000 
+0200
@@ -46,7 +46,7 @@
  * '/VIDEO_TS/VTS_01_1.IFO'.  On success, filesize will be set to the size of
  * the file in bytes.
  */
-uint32_t UDFFindFile( dvd_reader_t *device, char *filename, uint32_t *size );
+uint32_t UDFFindFile( dvd_reader_t *device, const char *filename, uint32_t 
*size );
 
 int UDFGetVolumeIdentifier(dvd_reader_t *device,
                            char *volid, unsigned int volid_size);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/libdvdread-5.0.3/src/dvdread/ifo_types.h 
new/libdvdread-6.0.0/src/dvdread/ifo_types.h
--- old/libdvdread-5.0.3/src/dvdread/ifo_types.h        2015-01-29 
13:37:56.000000000 +0100
+++ new/libdvdread-6.0.0/src/dvdread/ifo_types.h        2018-01-14 
10:44:49.000000000 +0100
@@ -215,10 +215,10 @@
   unsigned int interleaved      : 1;
   unsigned int stc_discontinuity: 1;
   unsigned int seamless_angle   : 1;
-
+  unsigned int zero_1           : 1;
   unsigned int playback_mode    : 1;  /**< When set, enter StillMode after 
each VOBU */
   unsigned int restricted       : 1;  /**< ?? drop out of fastforward? */
-  unsigned int unknown2         : 6;
+  unsigned int cell_type        : 5;  /** for karaoke, reserved otherwise */
   uint8_t still_time;
   uint8_t cell_cmd_nr;
   dvd_time_t playback_time;
@@ -316,7 +316,7 @@
   uint8_t  entry_id;
   unsigned int block_mode : 2;
   unsigned int block_type : 2;
-  unsigned int unknown1   : 4;
+  unsigned int zero_1   : 4;
   uint16_t ptl_id_mask;
   uint32_t pgc_start_byte;
   pgc_t *pgc;
@@ -578,7 +578,8 @@
  */
 typedef struct {
   uint16_t lang_code;
-  uint16_t unknown;      /* 0x0001, title 1? disc 1? side 1? */
+  uint8_t  zero_1;
+  uint8_t char_set;      /* 0x00 reserved Unicode, 0x01 ISO 646, 0x10 JIS 
Roman & JIS Kanji, 0x11 ISO 8859-1, 0x12 Shift JIS Kanji */
   uint32_t txtdt_start_byte;  /* prt, rel start of vmg_txtdt_mgi  */
   txtdt_t  *txtdt;
 } ATTRIBUTE_PACKED txtdt_lu_t;
@@ -588,8 +589,9 @@
  * Text Data Manager Information. (Incomplete)
  */
 typedef struct {
-  char disc_name[14];            /* how many bytes?? */
-  uint16_t nr_of_language_units; /* 32bit??          */
+  char disc_name[12];
+  uint16_t zero_1;
+  uint16_t nr_of_language_units;
   uint32_t last_byte;
   txtdt_lu_t *lu;
 } ATTRIBUTE_PACKED txtdt_mgi_t;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/libdvdread-5.0.3/src/dvdread/version.h 
new/libdvdread-6.0.0/src/dvdread/version.h
--- old/libdvdread-5.0.3/src/dvdread/version.h  1970-01-01 01:00:00.000000000 
+0100
+++ new/libdvdread-6.0.0/src/dvdread/version.h  2018-01-17 22:26:19.000000000 
+0100
@@ -0,0 +1,37 @@
+/*
+ * This file is part of libdvdread
+ * Copyright (C) 2015 VideoLAN
+ *
+ * This file is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This file is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library. If not, see
+ * <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef DVDREAD_VERSION_H_
+#define DVDREAD_VERSION_H_
+
+#define DVDREAD_VERSION_CODE(major, minor, micro) \
+    (((major) * 10000) +                         \
+     ((minor) *   100) +                         \
+     ((micro) *     1))
+
+#define DVDREAD_VERSION_MAJOR 6
+#define DVDREAD_VERSION_MINOR 0
+#define DVDREAD_VERSION_MICRO 0
+
+#define DVDREAD_VERSION_STRING "6.0.0"
+
+#define DVDREAD_VERSION \
+    DVDREAD_VERSION_CODE(DVDREAD_VERSION_MAJOR, DVDREAD_VERSION_MINOR, 
DVDREAD_VERSION_MICRO)
+
+#endif /* DVDREAD_VERSION_H_ */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/libdvdread-5.0.3/src/dvdread/version.h.in 
new/libdvdread-6.0.0/src/dvdread/version.h.in
--- old/libdvdread-5.0.3/src/dvdread/version.h.in       1970-01-01 
01:00:00.000000000 +0100
+++ new/libdvdread-6.0.0/src/dvdread/version.h.in       2016-05-19 
22:49:19.000000000 +0200
@@ -0,0 +1,37 @@
+/*
+ * This file is part of libdvdread
+ * Copyright (C) 2015 VideoLAN
+ *
+ * This file is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This file is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library. If not, see
+ * <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef DVDREAD_VERSION_H_
+#define DVDREAD_VERSION_H_
+
+#define DVDREAD_VERSION_CODE(major, minor, micro) \
+    (((major) * 10000) +                         \
+     ((minor) *   100) +                         \
+     ((micro) *     1))
+
+#define DVDREAD_VERSION_MAJOR @DVDREAD_VERSION_MAJOR@
+#define DVDREAD_VERSION_MINOR @DVDREAD_VERSION_MINOR@
+#define DVDREAD_VERSION_MICRO @DVDREAD_VERSION_MICRO@
+
+#define DVDREAD_VERSION_STRING 
"@DVDREAD_VERSION_MAJOR@.@DVDREAD_VERSION_MINOR@.@DVDREAD_VERSION_MICRO@"
+
+#define DVDREAD_VERSION \
+    DVDREAD_VERSION_CODE(DVDREAD_VERSION_MAJOR, DVDREAD_VERSION_MINOR, 
DVDREAD_VERSION_MICRO)
+
+#endif /* DVDREAD_VERSION_H_ */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/libdvdread-5.0.3/src/ifo_print.c new/libdvdread-6.0.0/src/ifo_print.c
--- old/libdvdread-5.0.3/src/ifo_print.c        2014-10-24 16:28:44.000000000 
+0200
+++ new/libdvdread-6.0.0/src/ifo_print.c        2018-01-14 10:44:49.000000000 
+0100
@@ -702,8 +702,8 @@
       printf("only still VOBUs ");
     if(cell_playback[i].restricted)
       printf("restricted cell ");
-    if(cell_playback[i].unknown2)
-      printf("Unknown 0x%x ", cell_playback[i].unknown2);
+    if(cell_playback[i].cell_type)
+      printf("cell type 0x%x ", cell_playback[i].cell_type);
     if(cell_playback[i].still_time)
       printf("still time %d ", cell_playback[i].still_time);
     if(cell_playback[i].cell_cmd_nr)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/libdvdread-5.0.3/src/ifo_read.c new/libdvdread-6.0.0/src/ifo_read.c
--- old/libdvdread-5.0.3/src/ifo_read.c 2015-01-21 17:22:42.000000000 +0100
+++ new/libdvdread-6.0.0/src/ifo_read.c 2018-01-14 10:44:49.000000000 +0100
@@ -228,7 +228,7 @@
   ps->entry_id                       = dvdread_getbits(&state, 8);
   ps->block_mode                     = dvdread_getbits(&state, 2);
   ps->block_type                     = dvdread_getbits(&state, 2);
-  ps->unknown1                       = dvdread_getbits(&state, 4);
+  ps->zero_1                         = dvdread_getbits(&state, 4);
   ps->ptl_id_mask                    = dvdread_getbits(&state, 16);
   ps->pgc_start_byte                 = dvdread_getbits(&state, 32);
 }
@@ -245,9 +245,10 @@
   cp->interleaved                     = dvdread_getbits(&state, 1);
   cp->stc_discontinuity               = dvdread_getbits(&state, 1);
   cp->seamless_angle                  = dvdread_getbits(&state, 1);
+  cp->zero_1                          = dvdread_getbits(&state, 1);
   cp->playback_mode                   = dvdread_getbits(&state, 1);
   cp->restricted                      = dvdread_getbits(&state, 1);
-  cp->unknown2                        = dvdread_getbits(&state, 6);
+  cp->cell_type                       = dvdread_getbits(&state, 5);
   cp->still_time                      = dvdread_getbits(&state, 8);
   cp->cell_cmd_nr                     = dvdread_getbits(&state, 8);
 
@@ -1048,6 +1049,10 @@
   B2N_16(tt_srpt->nr_of_srpts);
   B2N_32(tt_srpt->last_byte);
 
+  /* E-One releases don't fill this field */
+  if(tt_srpt->last_byte == 0) {
+    tt_srpt->last_byte = tt_srpt->nr_of_srpts * sizeof(title_info_t) - 1 + 
TT_SRPT_SIZE;
+  }
   info_length = tt_srpt->last_byte + 1 - TT_SRPT_SIZE;
 
   tt_srpt->title = calloc(1, info_length);
@@ -1118,8 +1123,8 @@
 
   if(ifofile->tt_srpt) {
     free(ifofile->tt_srpt->title);
-    free(ifofile->tt_srpt);
     ifofile->tt_srpt->title = NULL;
+    free(ifofile->tt_srpt);
     ifofile->tt_srpt = NULL;
   }
 }
@@ -1162,6 +1167,10 @@
   CHECK_VALUE(vts_ptt_srpt->nr_of_srpts != 0);
   CHECK_VALUE(vts_ptt_srpt->nr_of_srpts < 100); /* ?? */
 
+  /* E-One releases don't fill this field */
+  if(vts_ptt_srpt->last_byte == 0) {
+    vts_ptt_srpt->last_byte  = vts_ptt_srpt->nr_of_srpts * sizeof(*data) - 1 + 
VTS_PTT_SRPT_SIZE;
+  }
   info_length = vts_ptt_srpt->last_byte + 1 - VTS_PTT_SRPT_SIZE;
   data = calloc(1, info_length);
   if(!data)
@@ -1254,13 +1263,7 @@
       CHECK_VALUE(vts_ptt_srpt->title[i].ptt[j].pgcn < 1000); /* ?? */
       CHECK_VALUE(vts_ptt_srpt->title[i].ptt[j].pgn != 0);
       CHECK_VALUE(vts_ptt_srpt->title[i].ptt[j].pgn < 100); /* ?? */
-      if (vts_ptt_srpt->title[i].ptt[j].pgcn == 0 ||
-          vts_ptt_srpt->title[i].ptt[j].pgcn >= 1000 ||
-          vts_ptt_srpt->title[i].ptt[j].pgn == 0 ||
-          vts_ptt_srpt->title[i].ptt[j].pgn >= 100) {
-        return 0;
-      }
-
+      //don't abort here. E-One DVDs contain PTT with pgcn or pgn == 0
     }
   }
 
@@ -1895,7 +1898,7 @@
     memcpy(&pgcit->pgci_srp[i], ptr, PGCI_SRP_SIZE);
     ptr += PGCI_SRP_SIZE;
     read_pgci_srp(&pgcit->pgci_srp[i]);
-    CHECK_VALUE(pgcit->pgci_srp[i].unknown1 == 0);
+    CHECK_VALUE(pgcit->pgci_srp[i].zero_1 == 0);
   }
   free(data);
 
@@ -1920,12 +1923,10 @@
     pgcit->pgci_srp[i].pgc->ref_count = 1;
     if(!ifoRead_PGC(ifofile, pgcit->pgci_srp[i].pgc,
                     offset + pgcit->pgci_srp[i].pgc_start_byte)) {
-      int j;
-      for(j = 0; j <= i; j++) {
-        ifoFree_PGC(&pgcit->pgci_srp[j].pgc);
-      }
+      fprintf(stderr, "libdvdread: Unable to read invalid PCG\n");
+      //E-One releases provide boggus PGC, ie: out of bound start_byte
       free(pgcit->pgci_srp[i].pgc);
-      goto fail;
+      pgcit->pgci_srp[i].pgc = NULL;
     }
   }
 



Reply via email to