From owner-freebsd-ports-bugs@FreeBSD.ORG Wed Jan 3 13:30:14 2007 Return-Path: X-Original-To: freebsd-ports-bugs@hub.freebsd.org Delivered-To: freebsd-ports-bugs@hub.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id E757516A403 for ; Wed, 3 Jan 2007 13:30:13 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [69.147.83.40]) by mx1.freebsd.org (Postfix) with ESMTP id C496013C458 for ; Wed, 3 Jan 2007 13:30:13 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (gnats@localhost [127.0.0.1]) by freefall.freebsd.org (8.13.4/8.13.4) with ESMTP id l03DUDKV068744 for ; Wed, 3 Jan 2007 13:30:13 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.13.4/8.13.4/Submit) id l03DUDC1068743; Wed, 3 Jan 2007 13:30:13 GMT (envelope-from gnats) Resent-Date: Wed, 3 Jan 2007 13:30:13 GMT Resent-Message-Id: <200701031330.l03DUDC1068743@freefall.freebsd.org> Resent-From: FreeBSD-gnats-submit@FreeBSD.org (GNATS Filer) Resent-To: freebsd-ports-bugs@FreeBSD.org Resent-Reply-To: FreeBSD-gnats-submit@FreeBSD.org, Jonathan Liu Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 6FC7616A5D8 for ; Wed, 3 Jan 2007 13:24:38 +0000 (UTC) (envelope-from nobody@FreeBSD.org) Received: from www.freebsd.org (www.freebsd.org [69.147.83.33]) by mx1.freebsd.org (Postfix) with ESMTP id 5FFBF13C4A5 for ; Wed, 3 Jan 2007 13:24:38 +0000 (UTC) (envelope-from nobody@FreeBSD.org) Received: from www.freebsd.org (localhost [127.0.0.1]) by www.freebsd.org (8.13.1/8.13.1) with ESMTP id l03DOcdZ079711 for ; Wed, 3 Jan 2007 13:24:38 GMT (envelope-from nobody@www.freebsd.org) Received: (from nobody@localhost) by www.freebsd.org (8.13.1/8.13.1/Submit) id l03DOb9q079710; Wed, 3 Jan 2007 13:24:37 GMT (envelope-from nobody) Message-Id: <200701031324.l03DOb9q079710@www.freebsd.org> Date: Wed, 3 Jan 2007 13:24:37 GMT From: Jonathan Liu To: freebsd-gnats-submit@FreeBSD.org X-Send-Pr-Version: www-3.0 Cc: Subject: ports/107468: [ports] [dvdbackup] [patch] floating point division by zero exception when reading some DVDs X-BeenThere: freebsd-ports-bugs@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Ports bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 03 Jan 2007 13:30:14 -0000 >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: