From f3205bb095f0ff83649236762eb6ba7886e16e4e Mon Sep 17 00:00:00 2001 From: Ronnie Sahlberg Date: Sat, 27 Sep 2014 09:48:16 -0700 Subject: [PATCH] scsi-lowlevel.c: check that task/datain are valid before we unmarshalling Signed-off-by: Ronnie Sahlberg --- lib/scsi-lowlevel.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/lib/scsi-lowlevel.c b/lib/scsi-lowlevel.c index 696626b..600b7c2 100644 --- a/lib/scsi-lowlevel.c +++ b/lib/scsi-lowlevel.c @@ -3252,19 +3252,18 @@ scsi_datain_getfullsize(struct scsi_task *task) void * scsi_datain_unmarshall(struct scsi_task *task) { - switch (task->cdb[0]) { - case SCSI_OPCODE_TESTUNITREADY: + if (!task || !task->datain.size) return NULL; + + switch (task->cdb[0]) { case SCSI_OPCODE_INQUIRY: return scsi_inquiry_datain_unmarshall(task); case SCSI_OPCODE_MODESENSE6: - return scsi_modesense_datain_unmarshall(task, 1); + return scsi_modesense_datain_unmarshall(task, 1); case SCSI_OPCODE_MODESENSE10: return scsi_modesense_datain_unmarshall(task, 0); case SCSI_OPCODE_READCAPACITY10: return scsi_readcapacity10_datain_unmarshall(task); - case SCSI_OPCODE_SYNCHRONIZECACHE10: - return NULL; case SCSI_OPCODE_READTOC: return scsi_readtoc_datain_unmarshall(task); case SCSI_OPCODE_REPORTLUNS: