Date: Fri, 27 Jul 2012 14:22:59 GMT From: Fabian Keil <fk@fabiankeil.de> To: freebsd-gnats-submit@FreeBSD.org Subject: ports/170212: [PATCH] Update sysutils/dvdbackup from 0.4.1 to 0.4.2 Message-ID: <201207271422.q6REMxMh013567@red.freebsd.org> Resent-Message-ID: <201207271430.q6REU7J8059284@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 170212 >Category: ports >Synopsis: [PATCH] Update sysutils/dvdbackup from 0.4.1 to 0.4.2 >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-ports-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: update >Submitter-Id: current-users >Arrival-Date: Fri Jul 27 14:30:06 UTC 2012 >Closed-Date: >Last-Modified: >Originator: Fabian Keil >Release: HEAD >Organization: >Environment: FreeBSD r500.local 10.0-CURRENT FreeBSD 10.0-CURRENT #467 r+44f3512: Sun Jul 22 01:35:49 CEST 2012 fk@r500.local:/usr/obj/usr/src/sys/ZOEY amd64 >Description: The attached patch updates sysutils/dvdbackup from 0.4.1 to 0.4.2. It also fixes a segfault when mirroring a DVD fails. The fix has already been submitted upstream. I took the liberty to set DEFAULT_DVD_DEVICE to /dev/cd0, which is probably more common than /dev/acd0 nowadays. The upstream Changes according to http://dvdbackup.sourceforge.net/: ########### New Features: Added new command line option -p, --progress: Print progress report while copying from the DVD; thanks to flipflip for the patch. Added new translations from Launchpad: Danish (da), English (United Kingdom) (en_GB), Estonian (et), Portuguese (pt), Slovak (sk), Turkish (tr) New complete translation: English (United Kingdom) (en_GB), French (fr), Italian (it), Slovak (sk) Changes: Convert DVD title to lower case, but let every word in the title start with an upper case letter and replace underscores with spaces. Bug fixes: Print the correct vob file name in which the read error happens. Thanks to Kolja Nowak for the patch. (Closes: #585560, LP: #648752) Fix DVD title detection on FreeBSD. Thanks to Emanuel Haupt. Fix copying of fragmented chapters. Thanks to Christian Kuehnke for the patch. (LP: #648920) ########### >How-To-Repeat: One way to reproduce the crash is to try mirroring a DVD while the drive is empty. Trying to mirror a DVD with unreadable IFO files "works" as well. >Fix: Patch attached with submission follows: >From ec0175a143a4ada39a76959a1d3417570a876b25 Mon Sep 17 00:00:00 2001 From: Fabian Keil <fk@fabiankeil.de> Date: Fri, 27 Jul 2012 14:05:57 +0200 Subject: [PATCH 2/2] Update sysutils/dvdbackup to 0.4.2 While at it set DEFAULT_DVD_DEVICE to /dev/cd0 and fix a segfault when mirroring the disc fails. --- sysutils/dvdbackup/Makefile | 5 +- sysutils/dvdbackup/distinfo | 4 +- sysutils/dvdbackup/files/patch-src::dvdbackup.c | 66 +++++++++++------------ 3 files changed, 34 insertions(+), 41 deletions(-) diff --git sysutils/dvdbackup/Makefile sysutils/dvdbackup/Makefile index 95d5775..dc4925b 100644 --- sysutils/dvdbackup/Makefile +++ sysutils/dvdbackup/Makefile @@ -6,8 +6,7 @@ # PORTNAME= dvdbackup -PORTVERSION= 0.4.1 -PORTREVISION= 2 +PORTVERSION= 0.4.2 CATEGORIES= sysutils multimedia MASTER_SITES= SF/${PORTNAME}/${PORTNAME}/${PORTNAME}-${PORTVERSION} @@ -27,7 +26,7 @@ LDFLAGS+= -L${LOCALBASE}/lib MAN1= dvdbackup.1 PORTDOCS= NEWS README -DEFAULT_DVD_DEVICE?= /dev/acd0 +DEFAULT_DVD_DEVICE?= /dev/cd0 .if !defined(WITHOUT_NLS) USE_GETTEXT= yes diff --git sysutils/dvdbackup/distinfo sysutils/dvdbackup/distinfo index 70eca05..6c3e308 100644 --- sysutils/dvdbackup/distinfo +++ sysutils/dvdbackup/distinfo @@ -1,2 +1,2 @@ -SHA256 (dvdbackup-0.4.1.tar.gz) = ac9138b3265ef7f113d139e68130663937ce25322ae00922f74bab55aa63347b -SIZE (dvdbackup-0.4.1.tar.gz) = 232885 +SHA256 (dvdbackup-0.4.2.tar.gz) = 0a37c31cc6f2d3c146ec57064bda8a06cf5f2ec90455366cb250506bab964550 +SIZE (dvdbackup-0.4.2.tar.gz) = 267049 diff --git sysutils/dvdbackup/files/patch-src::dvdbackup.c sysutils/dvdbackup/files/patch-src::dvdbackup.c index 5c509eb..09df013 100644 --- sysutils/dvdbackup/files/patch-src::dvdbackup.c +++ sysutils/dvdbackup/files/patch-src::dvdbackup.c @@ -1,42 +1,36 @@ ---- src/dvdbackup.c.orig 2010-09-16 22:10:04.307951355 +0200 -+++ src/dvdbackup.c 2010-09-16 22:19:49.112413564 +0200 -@@ -99,7 +99,8 @@ +From 174f78e556d83458e34558a95cebd4d1d0960818 Mon Sep 17 00:00:00 2001 +From: Fabian Keil <fk@fabiankeil.de> +Date: Tue, 10 Jul 2012 19:12:13 +0200 +Subject: [PATCH] Keep the _dvd opened if DVDGetFileSet() fails in + DVDMirrorTitleSet() or DVDMirror() + +The _dvd is always closed in main() and doing it twice +results in double frees and depending on the malloc +options used segmentation faults. +--- + src/dvdbackup.c | 2 -- + 1 file changed, 2 deletions(-) + +diff --git src/dvdbackup.c src/dvdbackup.c +index 1ac96a5..ad411ea 100644 +--- src/dvdbackup.c ++++ src/dvdbackup.c +@@ -1547,7 +1547,6 @@ int DVDMirror(dvd_reader_t * _dvd, char * targetdir,char * title_name, read_erro - - static int CheckSizeArray(const int size_array[], int reference, int target) { -- if ( (size_array[reference]/size_array[target] == 1) && -+ if ( size_array[target] && -+ (size_array[reference]/size_array[target] == 1) && - ((size_array[reference] * 2 - size_array[target])/ size_array[target] == 1) && - ((size_array[reference]%size_array[target] * 3) < size_array[reference]) ) { - /* We have a dual DVD with two feature films - now let's see if they have the same amount of chapters*/ -@@ -1264,7 +1265,7 @@ - - /* Seek to title of first track, which is at (track_no * 32768) + 40 */ - -- if ( 32808 != lseek(filehandle, 32808, SEEK_SET) ) { -+ if ( 32768 != lseek(filehandle, 32768, SEEK_SET) ) { - close(filehandle); - fprintf(stderr, _("Cannot seek DVD device %s - check your DVD device\n"), device); + title_set_info = DVDGetFileSet(_dvd); + if (!title_set_info) { +- DVDClose(_dvd); return(1); -@@ -1272,10 +1273,16 @@ + } - /* Read the DVD-Video title */ +@@ -1574,7 +1573,6 @@ int DVDMirrorTitleSet(dvd_reader_t * _dvd, char * targetdir,char * title_name, i + title_set_info = DVDGetFileSet(_dvd); -- if ( 32 != read(filehandle, title, 32)) { -- close(filehandle); -- fprintf(stderr, _("Cannot read title from DVD device %s\n"), device); -- return(1); -+#define DVD_SEC_SIZ 2048 -+ { -+ char tempBuf[ DVD_SEC_SIZ ]; -+ -+ if (DVD_SEC_SIZ != read(filehandle, tempBuf, DVD_SEC_SIZ)) { -+ close(filehandle); -+ fprintf(stderr, _("Cannot read title from DVD device %s\n"), device); -+ return(1); -+ } -+ snprintf( title, 32, "%s", tempBuf + 40 ); + if (!title_set_info) { +- DVDClose(_dvd); + return(1); } - /* Terminate the title string */ +-- +1.7.10.3 + -- 1.7.10.3 >Release-Note: >Audit-Trail: >Unformatted:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201207271422.q6REMxMh013567>