[libdvdnav] backport patches upstream git master to fix several known bugs

Dominik Mierzejewski rathann at fedoraproject.org
Fri Oct 3 08:10:12 UTC 2014


commit 4b5294c98691158dc316bbedc47c2cf9c4d336c7
Author: Dominik 'Rathann' Mierzejewski <dominik at greysector.net>
Date:   Fri Oct 3 10:09:48 2014 +0200

    backport patches upstream git master to fix several known bugs
    
    Fixes LaunchPad bug ids #1236939, #570790

 0001-Do-not-assert-on-NULL-pgcit.patch             |   28 ++++++++++++++++++
 ...rror-in-dvdnav_get_position-instead-of-as.patch |   28 ++++++++++++++++++
 ...position-Fix-mutex-unlocking-in-case-of-e.patch |   30 ++++++++++++++++++++
 libdvdnav.spec                                     |   12 +++++++-
 4 files changed, 97 insertions(+), 1 deletions(-)
---
diff --git a/0001-Do-not-assert-on-NULL-pgcit.patch b/0001-Do-not-assert-on-NULL-pgcit.patch
new file mode 100644
index 0000000..c59d1fc
--- /dev/null
+++ b/0001-Do-not-assert-on-NULL-pgcit.patch
@@ -0,0 +1,28 @@
+From b026ed3da85b2085678a8d9e643e85e072ae6f83 Mon Sep 17 00:00:00 2001
+From: Jean-Baptiste Kempf <jb at videolan.org>
+Date: Sun, 31 Aug 2014 00:40:47 +0200
+Subject: [PATCH 1/5] Do not assert on NULL pgcit
+
+---
+ src/vm/getset.c | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/src/vm/getset.c b/src/vm/getset.c
+index 12b24ec..cd0c074 100644
+--- a/src/vm/getset.c
++++ b/src/vm/getset.c
+@@ -242,7 +242,10 @@ int get_ID(vm_t *vm, int id) {
+ 
+   /* Relies on state to get the correct pgcit. */
+   pgcit = get_PGCIT(vm);
+-  assert(pgcit != NULL);
++  if(pgcit == NULL) {
++    fprintf(MSG_OUT, "libdvdnav: PGCIT null!\n");
++    return 0;
++  }
+ #ifdef TRACE
+   fprintf(MSG_OUT, "libdvdnav: ** Searching for menu (0x%x) entry PGC\n", id);
+ #endif
+-- 
+1.9.3
+
diff --git a/0002-Return-an-error-in-dvdnav_get_position-instead-of-as.patch b/0002-Return-an-error-in-dvdnav_get_position-instead-of-as.patch
new file mode 100644
index 0000000..05caf64
--- /dev/null
+++ b/0002-Return-an-error-in-dvdnav_get_position-instead-of-as.patch
@@ -0,0 +1,28 @@
+From 2d73a2b3c6ccd3d45be194d482cfb09f8e5055e2 Mon Sep 17 00:00:00 2001
+From: Jean-Baptiste Kempf <jb at videolan.org>
+Date: Sun, 31 Aug 2014 00:51:40 +0200
+Subject: [PATCH 2/5] Return an error in dvdnav_get_position instead of
+ asserting
+
+LP: #1236939
+---
+ src/searching.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/src/searching.c b/src/searching.c
+index f6e497e..74a16ee 100644
+--- a/src/searching.c
++++ b/src/searching.c
+@@ -563,7 +563,8 @@ dvdnav_status_t dvdnav_get_position(dvdnav_t *this, uint32_t *pos,
+     *len += cell->last_sector - cell->first_sector + 1;
+   }
+ 
+-  assert((signed)*pos != -1);
++  if((signed)*pos == -1)
++    return DVDNAV_STATUS_ERR;
+ 
+   pthread_mutex_unlock(&this->vm_lock);
+ 
+-- 
+1.9.3
+
diff --git a/0003-dvdnav_get_position-Fix-mutex-unlocking-in-case-of-e.patch b/0003-dvdnav_get_position-Fix-mutex-unlocking-in-case-of-e.patch
new file mode 100644
index 0000000..87f14d5
--- /dev/null
+++ b/0003-dvdnav_get_position-Fix-mutex-unlocking-in-case-of-e.patch
@@ -0,0 +1,30 @@
+From e225924870be20b03aa5e05b8bd1f524499fe722 Mon Sep 17 00:00:00 2001
+From: Jean-Baptiste Kempf <jb at videolan.org>
+Date: Sun, 31 Aug 2014 19:51:04 +0200
+Subject: [PATCH 3/5] dvdnav_get_position: Fix mutex unlocking in case of error
+
+---
+ src/searching.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/searching.c b/src/searching.c
+index 74a16ee..93c7c2c 100644
+--- a/src/searching.c
++++ b/src/searching.c
+@@ -563,11 +563,11 @@ dvdnav_status_t dvdnav_get_position(dvdnav_t *this, uint32_t *pos,
+     *len += cell->last_sector - cell->first_sector + 1;
+   }
+ 
++  pthread_mutex_unlock(&this->vm_lock);
++
+   if((signed)*pos == -1)
+     return DVDNAV_STATUS_ERR;
+ 
+-  pthread_mutex_unlock(&this->vm_lock);
+-
+   return DVDNAV_STATUS_OK;
+ }
+ 
+-- 
+1.9.3
+
diff --git a/libdvdnav.spec b/libdvdnav.spec
index 0919f49..e6a64ba 100644
--- a/libdvdnav.spec
+++ b/libdvdnav.spec
@@ -1,10 +1,13 @@
 Name:           libdvdnav
 Version:        5.0.1
-Release:        1%{?dist}
+Release:        2.20140901gite225924%{?dist}
 Summary:        A library for reading DVD video discs based on Ogle code
 License:        GPLv2+
 URL:            http://dvdnav.mplayerhq.hu/
 Source0:        ftp://ftp.videolan.org/pub/videolan/libdvdnav/%{version}/libdvdnav-%{version}.tar.bz2
+Patch0:         0001-Do-not-assert-on-NULL-pgcit.patch
+Patch1:         0002-Return-an-error-in-dvdnav_get_position-instead-of-as.patch
+Patch2:         0003-dvdnav_get_position-Fix-mutex-unlocking-in-case-of-e.patch
 BuildRequires:  doxygen
 BuildRequires:  libdvdread-devel >= 4.1.3-0.3
 
@@ -24,6 +27,9 @@ libdvdnav library.
 
 %prep
 %setup -q
+%patch0 -p1
+%patch1 -p1
+%patch2 -p1
 
 %build
 %configure --disable-static
@@ -54,6 +60,10 @@ rm %{buildroot}%{_libdir}/libdvdnav.la
 %{_libdir}/pkgconfig/dvdnav.pc
 
 %changelog
+* Fri Oct 03 2014 Dominik Mierzejewski <rpm[AT]greysector.net> 5.0.1-2.20140901gite225924
+- backport patches upstream git master to fix several known bugs
+  (LP #1236939, #570790)
+
 * Sat Sep 20 2014 Dominik Mierzejewski <rpm[AT]greysector.net> 5.0.1-1
 - update to 5.0.1
 - drop obsolete patches


More information about the scm-commits mailing list