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