]> git.proxmox.com Git - mirror_edk2.git/blobdiff - NetworkPkg/IScsiDxe/IScsiCHAP.c
NetworkPkg/IScsiDxe: check IScsiHexToBin() return values
[mirror_edk2.git] / NetworkPkg / IScsiDxe / IScsiCHAP.c
index dbe3c8ef46f9743b854f6991a7f35d8f9f49bd67..7e930c0d1eab8b525e419d15de08bcc39a2c6f61 100644 (file)
@@ -290,11 +290,15 @@ IScsiCHAPOnRspReceived (
 \r
     AuthData->InIdentifier      = (UINT32) Result;\r
     AuthData->InChallengeLength = (UINT32) sizeof (AuthData->InChallenge);\r
-    IScsiHexToBin (\r
-      (UINT8 *) AuthData->InChallenge,\r
-      &AuthData->InChallengeLength,\r
-      Challenge\r
-      );\r
+    Status = IScsiHexToBin (\r
+               (UINT8 *) AuthData->InChallenge,\r
+               &AuthData->InChallengeLength,\r
+               Challenge\r
+               );\r
+    if (EFI_ERROR (Status)) {\r
+      Status = EFI_PROTOCOL_ERROR;\r
+      goto ON_EXIT;\r
+    }\r
     Status = IScsiCHAPCalculateResponse (\r
                AuthData->InIdentifier,\r
                AuthData->AuthConfig->CHAPSecret,\r
@@ -337,7 +341,11 @@ IScsiCHAPOnRspReceived (
     }\r
 \r
     RspLen = ISCSI_CHAP_RSP_LEN;\r
-    IScsiHexToBin (TargetRsp, &RspLen, Response);\r
+    Status = IScsiHexToBin (TargetRsp, &RspLen, Response);\r
+    if (EFI_ERROR (Status) || RspLen != ISCSI_CHAP_RSP_LEN) {\r
+      Status = EFI_PROTOCOL_ERROR;\r
+      goto ON_EXIT;\r
+    }\r
 \r
     //\r
     // Check the CHAP Name and Response replied by Target.\r