From 84f60008b04a6cecaab6f2920a930cd5bf12764b Mon Sep 17 00:00:00 2001
From: knan <knan@4ea69e1a-61f1-4043-bf83-b5c94c648137>
Date: Thu, 21 Nov 2002 16:49:44 +0000
Subject: [PATCH]   scsi: don't trust the data we receive from the drive too  
 much. It very well might have errors (like zero response length).   Seen on
 Megaraid logical drive, and verified in the driver source.

git-svn-id: https://smartmontools.svn.sourceforge.net/svnroot/smartmontools/trunk@297 4ea69e1a-61f1-4043-bf83-b5c94c648137
---
 sm5/CHANGELOG    | 6 +++++-
 sm5/scsicmds.c   | 4 ++--
 sm5/scsicmds.cpp | 4 ++--
 3 files changed, 9 insertions(+), 5 deletions(-)

diff --git a/sm5/CHANGELOG b/sm5/CHANGELOG
index edc7ec46b..e56b1aa01 100644
--- a/sm5/CHANGELOG
+++ b/sm5/CHANGELOG
@@ -1,6 +1,6 @@
 CHANGELOG for smartmontools
 
-$Id: CHANGELOG,v 1.51 2002/11/21 14:11:18 ballen4705 Exp $
+$Id: CHANGELOG,v 1.52 2002/11/21 16:49:43 knan Exp $
 
 Copyright (C) 2002 Bruce Allen <smartmontools-support@lists.sourceforge.net>
 
@@ -25,6 +25,10 @@ NOTES FOR FUTURE RELEASES: see TODO file.
 
 CURRENT RELEASE (see VERSION file in this directory):
 
+  Bols�: scsi: don't trust the data we receive from the drive too
+  much. It very well might have errors (like zero response length).
+  Seen on Megaraid logical drive, and verified in the driver source.
+
   Allen: smartd: added Directive -m for sending test email and
   for modifying email reminder behavior.  Updated manual, and sample
   configuration file to illustrate & explain this.
diff --git a/sm5/scsicmds.c b/sm5/scsicmds.c
index f96c334e7..338198ceb 100644
--- a/sm5/scsicmds.c
+++ b/sm5/scsicmds.c
@@ -33,7 +33,7 @@
 #include <scsi/scsi.h>
 #include "scsicmds.h"
 
-const char *CVSid3="$Id: scsicmds.c,v 1.14 2002/11/21 16:34:04 knan Exp $" CVSID4;
+const char *CVSid3="$Id: scsicmds.c,v 1.15 2002/11/21 16:49:44 knan Exp $" CVSID4;
 
 
 UINT8 logsense (int device, UINT8 pagenum, UINT8 *pBuf)
@@ -135,7 +135,7 @@ UINT8 modeselect (int device,  UINT8 pagenum, UINT8 *pBuf)
     
   memcpy ( &tBuf[ CDB_6_HDR_SIZE + MODE_DATA_HDR_SIZE],
 			 pBuf +  MODE_DATA_HDR_SIZE,
-			pBuf[0] - MODE_DATA_HDR_SIZE + 1);
+			CDB_6_MAX_DATA_SIZE - MODE_DATA_HDR_SIZE);
 
   tBuf[26] &= 0x3f;		
  
diff --git a/sm5/scsicmds.cpp b/sm5/scsicmds.cpp
index 286d5115d..f708a6b6d 100644
--- a/sm5/scsicmds.cpp
+++ b/sm5/scsicmds.cpp
@@ -33,7 +33,7 @@
 #include <scsi/scsi.h>
 #include "scsicmds.h"
 
-const char *CVSid3="$Id: scsicmds.cpp,v 1.14 2002/11/21 16:34:04 knan Exp $" CVSID4;
+const char *CVSid3="$Id: scsicmds.cpp,v 1.15 2002/11/21 16:49:44 knan Exp $" CVSID4;
 
 
 UINT8 logsense (int device, UINT8 pagenum, UINT8 *pBuf)
@@ -135,7 +135,7 @@ UINT8 modeselect (int device,  UINT8 pagenum, UINT8 *pBuf)
     
   memcpy ( &tBuf[ CDB_6_HDR_SIZE + MODE_DATA_HDR_SIZE],
 			 pBuf +  MODE_DATA_HDR_SIZE,
-			pBuf[0] - MODE_DATA_HDR_SIZE + 1);
+			CDB_6_MAX_DATA_SIZE - MODE_DATA_HDR_SIZE);
 
   tBuf[26] &= 0x3f;		
  
-- 
GitLab