Revision: 13936
http://edk2.svn.sourceforge.net/edk2/?rev=13936&view=rev
Author: vanjeff
Date: 2012-11-12 06:17:08 +0000 (Mon, 12 Nov 2012)
Log Message:
-----------
SyncSync patch r13929 and r13931 from main trunk.
1. Moved the PeiS3ResumeState access when PeiS3ResumeState is not 0, this will
fix K9 error.
2. Refine code to make it more safely.
Revision Links:
--------------
http://edk2.svn.sourceforge.net/edk2/?rev=13929&view=rev
http://edk2.svn.sourceforge.net/edk2/?rev=13931&view=rev
Modified Paths:
--------------
branches/UDK2010.SR1/MdeModulePkg/Universal/Acpi/BootScriptExecutorDxe/ScriptExecute.c
branches/UDK2010.SR1/MdeModulePkg/Universal/Network/IScsiDxe/IScsiCHAP.c
branches/UDK2010.SR1/MdeModulePkg/Universal/Network/IScsiDxe/IScsiProto.c
Modified:
branches/UDK2010.SR1/MdeModulePkg/Universal/Acpi/BootScriptExecutorDxe/ScriptExecute.c
===================================================================
---
branches/UDK2010.SR1/MdeModulePkg/Universal/Acpi/BootScriptExecutorDxe/ScriptExecute.c
2012-11-12 05:28:32 UTC (rev 13935)
+++
branches/UDK2010.SR1/MdeModulePkg/Universal/Acpi/BootScriptExecutorDxe/ScriptExecute.c
2012-11-12 06:17:08 UTC (rev 13936)
@@ -67,12 +67,6 @@
//
Status = S3BootScriptExecute ();
- //
- // Need report status back to S3ResumePeim.
- // If boot script execution is failed, S3ResumePeim wil report the error
status code.
- //
- PeiS3ResumeState->ReturnStatus = (UINT64)(UINTN)Status;
-
AsmWbinvd ();
//
@@ -84,6 +78,11 @@
// We need turn back to S3Resume - install boot script done ppi and report
status code on S3resume.
//
if (PeiS3ResumeState != 0) {
+ //
+ // Need report status back to S3ResumePeim.
+ // If boot script execution is failed, S3ResumePeim wil report the error
status code.
+ //
+ PeiS3ResumeState->ReturnStatus = (UINT64)(UINTN)Status;
if (FeaturePcdGet (PcdDxeIplSwitchToLongMode)) {
//
// X64 S3 Resume
Modified:
branches/UDK2010.SR1/MdeModulePkg/Universal/Network/IScsiDxe/IScsiCHAP.c
===================================================================
--- branches/UDK2010.SR1/MdeModulePkg/Universal/Network/IScsiDxe/IScsiCHAP.c
2012-11-12 05:28:32 UTC (rev 13935)
+++ branches/UDK2010.SR1/MdeModulePkg/Universal/Network/IScsiDxe/IScsiCHAP.c
2012-11-12 06:17:08 UTC (rev 13936)
@@ -332,6 +332,9 @@
Session = Conn->Session;
AuthData = &Session->AuthData;
LoginReq = (ISCSI_LOGIN_REQUEST *) NetbufGetByte (Pdu, 0, 0);
+ if (LoginReq == NULL) {
+ return EFI_PROTOCOL_ERROR;
+ }
Status = EFI_SUCCESS;
RspLen = 2 * ISCSI_CHAP_RSP_LEN + 3;
Modified:
branches/UDK2010.SR1/MdeModulePkg/Universal/Network/IScsiDxe/IScsiProto.c
===================================================================
--- branches/UDK2010.SR1/MdeModulePkg/Universal/Network/IScsiDxe/IScsiProto.c
2012-11-12 05:28:32 UTC (rev 13935)
+++ branches/UDK2010.SR1/MdeModulePkg/Universal/Network/IScsiDxe/IScsiProto.c
2012-11-12 06:17:08 UTC (rev 13936)
@@ -441,6 +441,9 @@
CHAR8 *Data;
LoginReq = (ISCSI_LOGIN_REQUEST *) NetbufGetByte (Pdu, 0, NULL);
+ if (LoginReq == NULL) {
+ return EFI_PROTOCOL_ERROR;
+ }
DataSegLen = NTOH24 (LoginReq->DataSegmentLength);
KeyLen = (UINT32) AsciiStrLen (Key);
@@ -607,6 +610,9 @@
Session = Conn->Session;
LoginRsp = (ISCSI_LOGIN_RESPONSE *) NetbufGetByte (Pdu, 0, NULL);
+ if (LoginRsp == NULL) {
+ return EFI_PROTOCOL_ERROR;
+ }
if (!ISCSI_CHECK_OPCODE (LoginRsp, ISCSI_OPCODE_LOGIN_RSP)) {
//
// It's not a Login Response
@@ -2070,6 +2076,7 @@
NET_BUF *DataOutPdu;
ISCSI_CONNECTION *Conn;
ISCSI_XFER_CONTEXT *XferContext;
+ UINT8 *DataOutPacket;
PduList = AllocatePool (sizeof (LIST_ENTRY));
if (PduList == NULL) {
@@ -2113,8 +2120,15 @@
//
// Set the F bit for the last data out PDU in this sequence.
//
- ISCSI_SET_FLAG (NetbufGetByte (DataOutPdu, 0, NULL), ISCSI_BHS_FLAG_FINAL);
+ DataOutPacket = NetbufGetByte (DataOutPdu, 0, NULL);
+ if (DataOutPacket == NULL) {
+ IScsiFreeNbufList (PduList);
+ PduList = NULL;
+ goto ON_EXIT;
+ }
+ ISCSI_SET_FLAG (DataOutPacket, ISCSI_BHS_FLAG_FINAL);
+
ON_EXIT:
return PduList;
@@ -2194,6 +2208,9 @@
EFI_STATUS Status;
DataInHdr = (ISCSI_SCSI_DATA_IN *) NetbufGetByte (Pdu, 0,
NULL);
+ if (DataInHdr == NULL) {
+ return EFI_PROTOCOL_ERROR;
+ }
DataInHdr->InitiatorTaskTag = NTOHL (DataInHdr->InitiatorTaskTag);
DataInHdr->ExpCmdSN = NTOHL (DataInHdr->ExpCmdSN);
@@ -2282,6 +2299,9 @@
UINT8 *Data;
R2THdr = (ISCSI_READY_TO_TRANSFER *) NetbufGetByte (Pdu, 0, NULL);
+ if (R2THdr == NULL) {
+ return EFI_PROTOCOL_ERROR;
+ }
R2THdr->InitiatorTaskTag = NTOHL (R2THdr->InitiatorTaskTag);
R2THdr->TargetTransferTag = NTOHL (R2THdr->TargetTransferTag);
@@ -2345,6 +2365,9 @@
UINT32 DataSegLen;
ScsiRspHdr = (SCSI_RESPONSE *) NetbufGetByte (Pdu, 0,
NULL);
+ if (ScsiRspHdr == NULL) {
+ return EFI_PROTOCOL_ERROR;
+ }
ScsiRspHdr->InitiatorTaskTag = NTOHL (ScsiRspHdr->InitiatorTaskTag);
if (ScsiRspHdr->InitiatorTaskTag != Tcb->InitiatorTaskTag) {
@@ -2407,6 +2430,9 @@
DataSegLen = ISCSI_GET_DATASEG_LEN (ScsiRspHdr);
if (DataSegLen != 0) {
SenseData = (ISCSI_SENSE_DATA *) NetbufGetByte (Pdu, sizeof
(SCSI_RESPONSE), NULL);
+ if (SenseData == NULL) {
+ return EFI_PROTOCOL_ERROR;
+ }
SenseData->Length = NTOHS (SenseData->Length);
@@ -2441,6 +2467,9 @@
EFI_STATUS Status;
NopInHdr = (ISCSI_NOP_IN *) NetbufGetByte (Pdu, 0, NULL);
+ if (NopInHdr == NULL) {
+ return EFI_PROTOCOL_ERROR;
+ }
NopInHdr->StatSN = NTOHL (NopInHdr->StatSN);
NopInHdr->ExpCmdSN = NTOHL (NopInHdr->ExpCmdSN);
@@ -2496,7 +2525,7 @@
UINT8 *Data;
ISCSI_IN_BUFFER_CONTEXT InBufferContext;
UINT64 Timeout;
- UINT8 *Buffer;
+ UINT8 *PduHdr;
Private = ISCSI_DRIVER_DATA_FROM_EXT_SCSI_PASS_THRU (PassThru);
Session = &Private->Session;
@@ -2534,8 +2563,13 @@
}
XferContext = &Tcb->XferContext;
- Buffer = NetbufGetByte (Pdu, 0, NULL);
- XferContext->Offset = ISCSI_GET_DATASEG_LEN (Buffer);
+ PduHdr = NetbufGetByte (Pdu, 0, NULL);
+ if (PduHdr == NULL) {
+ Status = EFI_PROTOCOL_ERROR;
+ NetbufFree (Pdu);
+ goto ON_EXIT;
+ }
+ XferContext->Offset = ISCSI_GET_DATASEG_LEN (PduHdr);
//
// Transmit the SCSI Command PDU.
@@ -2591,7 +2625,13 @@
goto ON_EXIT;
}
- switch (ISCSI_GET_OPCODE (NetbufGetByte (Pdu, 0, NULL))) {
+ PduHdr = NetbufGetByte (Pdu, 0, NULL);
+ if (PduHdr == NULL) {
+ Status = EFI_PROTOCOL_ERROR;
+ NetbufFree (Pdu);
+ goto ON_EXIT;
+ }
+ switch (ISCSI_GET_OPCODE (PduHdr)) {
case ISCSI_OPCODE_SCSI_DATA_IN:
Status = IScsiOnDataInRcvd (Pdu, Tcb, Packet);
break;
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
------------------------------------------------------------------------------
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://p.sf.net/sfu/appdyn_d2d_nov
_______________________________________________
edk2-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/edk2-commits