scsi-lowlevel.c: check that task/datain are valid before we unmarshalling

Signed-off-by: Ronnie Sahlberg <ronniesahlberg@gmail.com>
This commit is contained in:
Ronnie Sahlberg
2014-09-27 09:48:16 -07:00
parent edbfb12232
commit f3205bb095
+3 -4
View File
@@ -3252,9 +3252,10 @@ scsi_datain_getfullsize(struct scsi_task *task)
void * void *
scsi_datain_unmarshall(struct scsi_task *task) scsi_datain_unmarshall(struct scsi_task *task)
{ {
switch (task->cdb[0]) { if (!task || !task->datain.size)
case SCSI_OPCODE_TESTUNITREADY:
return NULL; return NULL;
switch (task->cdb[0]) {
case SCSI_OPCODE_INQUIRY: case SCSI_OPCODE_INQUIRY:
return scsi_inquiry_datain_unmarshall(task); return scsi_inquiry_datain_unmarshall(task);
case SCSI_OPCODE_MODESENSE6: case SCSI_OPCODE_MODESENSE6:
@@ -3263,8 +3264,6 @@ scsi_datain_unmarshall(struct scsi_task *task)
return scsi_modesense_datain_unmarshall(task, 0); return scsi_modesense_datain_unmarshall(task, 0);
case SCSI_OPCODE_READCAPACITY10: case SCSI_OPCODE_READCAPACITY10:
return scsi_readcapacity10_datain_unmarshall(task); return scsi_readcapacity10_datain_unmarshall(task);
case SCSI_OPCODE_SYNCHRONIZECACHE10:
return NULL;
case SCSI_OPCODE_READTOC: case SCSI_OPCODE_READTOC:
return scsi_readtoc_datain_unmarshall(task); return scsi_readtoc_datain_unmarshall(task);
case SCSI_OPCODE_REPORTLUNS: case SCSI_OPCODE_REPORTLUNS: