[PATCH] ftape divide-by-zero found by Stanford Checker

"Randy.Dunlap" <[email protected]> Mon, 10 Feb 2003 21:22:35 -0800
Newsgroups gmane.linux.tape
Message-ID <[email protected]>
Hi,

This patch fixes a potential divide-by-zero found by the
Stanford Checker.

The patch applies to 2.5.60.  Please apply.

Thanks,
~Randy
checker-bounds-ftape.patch (text/plain, 1.8 KB)
patch_name:	checker-bounds-ftape.patch
patch_version:	2003-02-10.21.15.03
author:		Randy.Dunlap <[email protected]>
description:	fix potential div-by-zero found by stanford checker
product:	Linux
product_versions: linux-2560
changelog:	_
URL:		_
requires:	_
conflicts:	_
diffstat:	=
 ftape-read.c |   14 +++++++++++---
 1 files changed, 11 insertions(+), 3 deletions(-)


diff -Naur ./drivers/char/ftape/lowlevel/ftape-read.c%BNDS ./drivers/char/ftape/lowlevel/ftape-read.c
--- ./drivers/char/ftape/lowlevel/ftape-read.c%BNDS	Thu Jan 16 18:21:38 2003
+++ ./drivers/char/ftape/lowlevel/ftape-read.c	Wed Jan 29 10:57:09 2003
@@ -589,6 +589,8 @@
 		(max_floppy_track != 254 || max_floppy_sector != 128))
 #endif
 	   ) {
+		char segperheadz = ftape_segments_per_head ? ' ' : '?';
+		char segpercylz  = ftape_segments_per_cylinder ? ' ' : '?';
 		TRACE(ft_t_err,"Tape parameters inconsistency, please report");
 		TRACE(ft_t_err, "reported = %d/%d/%d/%d/%d/%d",
 		      ft_format_code,
@@ -597,14 +599,20 @@
 		      max_floppy_side,
 		      max_floppy_track,
 		      max_floppy_sector);
-		TRACE(ft_t_err, "required = %d/%d/%d/%d/%d/%d",
+		TRACE(ft_t_err, "required = %d/%d/%d/%d%c/%d%c/%d",
 		      ft_format_code,
 		      ft_segments_per_track,
 		      ft_tracks_per_tape,
+		      ftape_segments_per_head ?
 		      ((ft_segments_per_track * ft_tracks_per_tape -1) / 
-		       ftape_segments_per_head ),
+		       ftape_segments_per_head ) :
+			(ft_segments_per_track * ft_tracks_per_tape -1),
+			segperheadz,
+		      ftape_segments_per_cylinder ?
 		      (ftape_segments_per_head / 
-		       ftape_segments_per_cylinder - 1 ),
+		       ftape_segments_per_cylinder - 1 ) :
+			ftape_segments_per_head - 1,
+			segpercylz,
 		      (ftape_segments_per_cylinder * FT_SECTORS_PER_SEGMENT));
 		TRACE_EXIT -EIO;
 	}