CHAR8 *Data;\r
\r
LoginReq = (ISCSI_LOGIN_REQUEST *) NetbufGetByte (Pdu, 0, NULL);\r
+ if (LoginReq == NULL) {\r
+ return EFI_PROTOCOL_ERROR;\r
+ }\r
DataSegLen = NTOH24 (LoginReq->DataSegmentLength);\r
\r
KeyLen = (UINT32) AsciiStrLen (Key);\r
Session = Conn->Session;\r
\r
LoginRsp = (ISCSI_LOGIN_RESPONSE *) NetbufGetByte (Pdu, 0, NULL);\r
+ if (LoginRsp == NULL) {\r
+ return EFI_PROTOCOL_ERROR;\r
+ }\r
if (!ISCSI_CHECK_OPCODE (LoginRsp, ISCSI_OPCODE_LOGIN_RSP)) {\r
//\r
// It's not a Login Response\r
NET_BUF *DataOutPdu;\r
ISCSI_CONNECTION *Conn;\r
ISCSI_XFER_CONTEXT *XferContext;\r
+ UINT8 *DataOutPacket;\r
\r
PduList = AllocatePool (sizeof (LIST_ENTRY));\r
if (PduList == NULL) {\r
//\r
// Set the F bit for the last data out PDU in this sequence.\r
//\r
- ISCSI_SET_FLAG (NetbufGetByte (DataOutPdu, 0, NULL), ISCSI_BHS_FLAG_FINAL);\r
+ DataOutPacket = NetbufGetByte (DataOutPdu, 0, NULL);\r
+ if (DataOutPacket == NULL) {\r
+ IScsiFreeNbufList (PduList);\r
+ PduList = NULL;\r
+ goto ON_EXIT;\r
+ }\r
+\r
+ ISCSI_SET_FLAG (DataOutPacket, ISCSI_BHS_FLAG_FINAL);\r
\r
ON_EXIT:\r
\r
EFI_STATUS Status;\r
\r
DataInHdr = (ISCSI_SCSI_DATA_IN *) NetbufGetByte (Pdu, 0, NULL);\r
+ if (DataInHdr == NULL) {\r
+ return EFI_PROTOCOL_ERROR;\r
+ }\r
\r
DataInHdr->InitiatorTaskTag = NTOHL (DataInHdr->InitiatorTaskTag);\r
DataInHdr->ExpCmdSN = NTOHL (DataInHdr->ExpCmdSN);\r
UINT8 *Data;\r
\r
R2THdr = (ISCSI_READY_TO_TRANSFER *) NetbufGetByte (Pdu, 0, NULL);\r
+ if (R2THdr == NULL) {\r
+ return EFI_PROTOCOL_ERROR;\r
+ }\r
\r
R2THdr->InitiatorTaskTag = NTOHL (R2THdr->InitiatorTaskTag);\r
R2THdr->TargetTransferTag = NTOHL (R2THdr->TargetTransferTag);\r
UINT32 DataSegLen;\r
\r
ScsiRspHdr = (SCSI_RESPONSE *) NetbufGetByte (Pdu, 0, NULL);\r
+ if (ScsiRspHdr == NULL) {\r
+ return EFI_PROTOCOL_ERROR;\r
+ }\r
\r
ScsiRspHdr->InitiatorTaskTag = NTOHL (ScsiRspHdr->InitiatorTaskTag);\r
if (ScsiRspHdr->InitiatorTaskTag != Tcb->InitiatorTaskTag) {\r
DataSegLen = ISCSI_GET_DATASEG_LEN (ScsiRspHdr);\r
if (DataSegLen != 0) {\r
SenseData = (ISCSI_SENSE_DATA *) NetbufGetByte (Pdu, sizeof (SCSI_RESPONSE), NULL);\r
+ if (SenseData == NULL) {\r
+ return EFI_PROTOCOL_ERROR;\r
+ }\r
\r
SenseData->Length = NTOHS (SenseData->Length);\r
\r
EFI_STATUS Status;\r
\r
NopInHdr = (ISCSI_NOP_IN *) NetbufGetByte (Pdu, 0, NULL);\r
+ if (NopInHdr == NULL) {\r
+ return EFI_PROTOCOL_ERROR;\r
+ }\r
\r
NopInHdr->StatSN = NTOHL (NopInHdr->StatSN);\r
NopInHdr->ExpCmdSN = NTOHL (NopInHdr->ExpCmdSN);\r
UINT8 *Data;\r
ISCSI_IN_BUFFER_CONTEXT InBufferContext;\r
UINT64 Timeout;\r
- UINT8 *Buffer;\r
+ UINT8 *PduHdr;\r
\r
Private = ISCSI_DRIVER_DATA_FROM_EXT_SCSI_PASS_THRU (PassThru);\r
Session = &Private->Session;\r
}\r
\r
XferContext = &Tcb->XferContext;\r
- Buffer = NetbufGetByte (Pdu, 0, NULL);\r
- XferContext->Offset = ISCSI_GET_DATASEG_LEN (Buffer);\r
+ PduHdr = NetbufGetByte (Pdu, 0, NULL);\r
+ if (PduHdr == NULL) {\r
+ Status = EFI_PROTOCOL_ERROR;\r
+ NetbufFree (Pdu);\r
+ goto ON_EXIT;\r
+ }\r
+ XferContext->Offset = ISCSI_GET_DATASEG_LEN (PduHdr);\r
\r
//\r
// Transmit the SCSI Command PDU.\r
goto ON_EXIT;\r
}\r
\r
- switch (ISCSI_GET_OPCODE (NetbufGetByte (Pdu, 0, NULL))) {\r
+ PduHdr = NetbufGetByte (Pdu, 0, NULL);\r
+ if (PduHdr == NULL) {\r
+ Status = EFI_PROTOCOL_ERROR;\r
+ NetbufFree (Pdu);\r
+ goto ON_EXIT;\r
+ }\r
+ switch (ISCSI_GET_OPCODE (PduHdr)) {\r
case ISCSI_OPCODE_SCSI_DATA_IN:\r
Status = IScsiOnDataInRcvd (Pdu, Tcb, Packet);\r
break;\r