diff --git a/sm5/CHANGELOG b/sm5/CHANGELOG
index edc7ec46b9c2ffac3c2219abf31c96fe5685270d..e56b1aa0153b8c9391131c6a78c41c832f6749b8 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 f96c334e77d063dfdaf69bc7ec0a550eae2580c2..338198ceb03bbfcd30f85365ef1efd3e3b627571 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 286d5115da78966329d2176e63d4099d084df003..f708a6b6d11e64e5af8a827f2a8c3fd3374cc314 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;