From 4b5294c98691158dc316bbedc47c2cf9c4d336c7 Mon Sep 17 00:00:00 2001 From: Dominik 'Rathann' Mierzejewski Date: Fri, 3 Oct 2014 10:09:48 +0200 Subject: [PATCH] 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 +++++++++++++++++ ...in-dvdnav_get_position-instead-of-as.patch | 28 +++++++++++++++++ ...ion-Fix-mutex-unlocking-in-case-of-e.patch | 30 +++++++++++++++++++ libdvdnav.spec | 12 +++++++- 4 files changed, 97 insertions(+), 1 deletion(-) create mode 100644 0001-Do-not-assert-on-NULL-pgcit.patch create mode 100644 0002-Return-an-error-in-dvdnav_get_position-instead-of-as.patch create mode 100644 0003-dvdnav_get_position-Fix-mutex-unlocking-in-case-of-e.patch 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 +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 +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 +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 5.0.1-2.20140901gite225924 +- backport patches upstream git master to fix several known bugs + (LP #1236939, #570790) + * Sat Sep 20 2014 Dominik Mierzejewski 5.0.1-1 - update to 5.0.1 - drop obsolete patches