Date: Wed, 3 Jan 2007 13:24:37 GMT From: Jonathan Liu<Net147@hotmail.com> To: freebsd-gnats-submit@FreeBSD.org Subject: ports/107468: [ports] [dvdbackup] [patch] floating point division by zero exception when reading some DVDs Message-ID: <200701031324.l03DOb9q079710@www.freebsd.org> Resent-Message-ID: <200701031330.l03DUDC1068743@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 107468 >Category: ports >Synopsis: [ports] [dvdbackup] [patch] floating point division by zero exception when reading some DVDs >Confidential: no >Severity: serious >Priority: medium >Responsible: freebsd-ports-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Wed Jan 03 13:30:13 GMT 2007 >Closed-Date: >Last-Modified: >Originator: Jonathan Liu >Release: 6.2-RC1 >Organization: >Environment: FreeBSD freebsd 6.2-RC1 FreeBSD 6.2-RC1 #0: Thu Nov 16 05:12:08 UTC 2006 root@opus.cse.buffalo.edu:/usr/obj/usr/src/sys/SMP i386 >Description: When reading information from DVDs using dvdbackup, the CheckSizeArray() function may give a floating point division by zero exception as a result of failing to check if the divisor is non-zero before diving by the divisor. >How-To-Repeat: dvdbackup -i /dev/acd0 -I where /dev/acd0 is the DVD device Note: This only occurs on some DVDs. >Fix: --- patch-src::dvdbackup.c.orig Thu Jan 4 00:02:03 2007 +++ patch-src::dvdbackup.c Thu Jan 4 00:02:17 2007 @@ -19,6 +19,16 @@ fprintf(stderr,"\t-a is option to the -F switch and has no effect on other options\n"); fprintf(stderr,"\t-s and -e should prefereibly be used together with -t \n\n"); exit(1); +@@ -228,7 +228,8 @@ + } + + 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 lets see if they have the same amount of chapters*/ @@ -782,7 +783,7 @@ to consider the second one a feature title we are doing two checks (biggest + biggest - second) /second == 1 and biggest%second * 3 < biggest */ >Release-Note: >Audit-Trail: >Unformatted:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200701031324.l03DOb9q079710>