Blame SOURCES/edk2-NetworkPkg-IScsiDxe-wrap-IScsiCHAP-source-files-to-8.patch

9e1c84
From 28e260828557340709ef14e8132e96b54128c5a3 Mon Sep 17 00:00:00 2001
d15d15
From: Laszlo Ersek <lersek@redhat.com>
9e1c84
Date: Tue, 8 Jun 2021 14:12:50 +0200
d15d15
Subject: [PATCH 01/10] NetworkPkg/IScsiDxe: wrap IScsiCHAP source files to 80
d15d15
 characters
d15d15
MIME-Version: 1.0
d15d15
Content-Type: text/plain; charset=UTF-8
d15d15
Content-Transfer-Encoding: 8bit
d15d15
d15d15
RH-Author: Laszlo Ersek <lersek@redhat.com>
9e1c84
RH-MergeRequest: 5: NetworkPkg/IScsiDxe: fix IScsiHexToBin() security and functionality bugs [rhel-8.5.0, post-rebase]
9e1c84
RH-Commit: [1/10] 7ae9c45fbc0ffd807a95fad802619cd838257cc8
9e1c84
RH-Bugzilla: 1956408
d15d15
RH-Acked-by: Philippe Mathieu-Daudé <philmd@redhat.com>
d15d15
d15d15
Working with overlong lines is difficult for me; rewrap the CHAP-related
d15d15
source files in IScsiDxe to 80 characters width. No functional changes.
d15d15
d15d15
Cc: Jiaxin Wu <jiaxin.wu@intel.com>
d15d15
Cc: Maciej Rabeda <maciej.rabeda@linux.intel.com>
9e1c84
Cc: Philippe Mathieu-Daud <philmd@redhat.com>
d15d15
Cc: Siyuan Fu <siyuan.fu@intel.com>
d15d15
Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=3356
d15d15
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
d15d15
Reviewed-by: Maciej Rabeda <maciej.rabeda@linux.intel.com>
9e1c84
Reviewed-by: Philippe Mathieu-Daud <philmd@redhat.com>
9e1c84
Message-Id: <20210608121259.32451-2-lersek@redhat.com>
9e1c84
(cherry picked from commit 83761337ec91fbd459c55d7d956fcc25df3bfa50)
d15d15
---
d15d15
 NetworkPkg/IScsiDxe/IScsiCHAP.c | 90 +++++++++++++++++++++++++--------
d15d15
 NetworkPkg/IScsiDxe/IScsiCHAP.h |  3 +-
d15d15
 2 files changed, 71 insertions(+), 22 deletions(-)
d15d15
d15d15
diff --git a/NetworkPkg/IScsiDxe/IScsiCHAP.c b/NetworkPkg/IScsiDxe/IScsiCHAP.c
d15d15
index 355c6f129f..cbbc56ae5b 100644
d15d15
--- a/NetworkPkg/IScsiDxe/IScsiCHAP.c
d15d15
+++ b/NetworkPkg/IScsiDxe/IScsiCHAP.c
d15d15
@@ -1,5 +1,6 @@
d15d15
 /** @file
d15d15
-  This file is for Challenge-Handshake Authentication Protocol (CHAP) Configuration.
d15d15
+  This file is for Challenge-Handshake Authentication Protocol (CHAP)
d15d15
+  Configuration.
d15d15
 
d15d15
 Copyright (c) 2004 - 2018, Intel Corporation. All rights reserved.
d15d15
 SPDX-License-Identifier: BSD-2-Clause-Patent
d15d15
@@ -18,9 +19,11 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
d15d15
   @param[in]   ChallengeLength    The length of iSCSI CHAP challenge message.
d15d15
   @param[out]  ChapResponse       The calculation of the expected hash value.
d15d15
 
d15d15
-  @retval EFI_SUCCESS             The expected hash value was calculatedly successfully.
d15d15
-  @retval EFI_PROTOCOL_ERROR      The length of the secret should be at least the
d15d15
-                                  length of the hash value for the hashing algorithm chosen.
d15d15
+  @retval EFI_SUCCESS             The expected hash value was calculatedly
d15d15
+                                  successfully.
d15d15
+  @retval EFI_PROTOCOL_ERROR      The length of the secret should be at least
d15d15
+                                  the length of the hash value for the hashing
d15d15
+                                  algorithm chosen.
d15d15
   @retval EFI_PROTOCOL_ERROR      MD5 hash operation fail.
d15d15
   @retval EFI_OUT_OF_RESOURCES    Fail to allocate resource to complete MD5.
d15d15
 
d15d15
@@ -94,8 +97,10 @@ Exit:
d15d15
   @param[in]   AuthData             iSCSI CHAP authentication data.
d15d15
   @param[in]   TargetResponse       The response from target.
d15d15
 
d15d15
-  @retval EFI_SUCCESS               The response from target passed authentication.
d15d15
-  @retval EFI_SECURITY_VIOLATION    The response from target was not expected value.
d15d15
+  @retval EFI_SUCCESS               The response from target passed
d15d15
+                                    authentication.
d15d15
+  @retval EFI_SECURITY_VIOLATION    The response from target was not expected
d15d15
+                                    value.
d15d15
   @retval Others                    Other errors as indicated.
d15d15
 
d15d15
 **/
d15d15
@@ -193,7 +198,10 @@ IScsiCHAPOnRspReceived (
d15d15
     //
d15d15
     // The first Login Response.
d15d15
     //
d15d15
-    Value = IScsiGetValueByKeyFromList (KeyValueList, ISCSI_KEY_TARGET_PORTAL_GROUP_TAG);
d15d15
+    Value = IScsiGetValueByKeyFromList (
d15d15
+              KeyValueList,
d15d15
+              ISCSI_KEY_TARGET_PORTAL_GROUP_TAG
d15d15
+              );
d15d15
     if (Value == NULL) {
d15d15
       goto ON_EXIT;
d15d15
     }
d15d15
@@ -205,13 +213,17 @@ IScsiCHAPOnRspReceived (
d15d15
 
d15d15
     Session->TargetPortalGroupTag = (UINT16) Result;
d15d15
 
d15d15
-    Value                         = IScsiGetValueByKeyFromList (KeyValueList, ISCSI_KEY_AUTH_METHOD);
d15d15
+    Value                         = IScsiGetValueByKeyFromList (
d15d15
+                                      KeyValueList,
d15d15
+                                      ISCSI_KEY_AUTH_METHOD
d15d15
+                                      );
d15d15
     if (Value == NULL) {
d15d15
       goto ON_EXIT;
d15d15
     }
d15d15
     //
d15d15
-    // Initiator mandates CHAP authentication but target replies without "CHAP", or
d15d15
-    // initiator suggets "None" but target replies with some kind of auth method.
d15d15
+    // Initiator mandates CHAP authentication but target replies without
d15d15
+    // "CHAP", or initiator suggets "None" but target replies with some kind of
d15d15
+    // auth method.
d15d15
     //
d15d15
     if (Session->AuthType == ISCSI_AUTH_TYPE_NONE) {
d15d15
       if (AsciiStrCmp (Value, ISCSI_KEY_VALUE_NONE) != 0) {
d15d15
@@ -236,7 +248,10 @@ IScsiCHAPOnRspReceived (
d15d15
     //
d15d15
     // The Target replies with CHAP_A= CHAP_I= CHAP_C=<C>
d15d15
     //
d15d15
-    Value = IScsiGetValueByKeyFromList (KeyValueList, ISCSI_KEY_CHAP_ALGORITHM);
d15d15
+    Value = IScsiGetValueByKeyFromList (
d15d15
+              KeyValueList,
d15d15
+              ISCSI_KEY_CHAP_ALGORITHM
d15d15
+              );
d15d15
     if (Value == NULL) {
d15d15
       goto ON_EXIT;
d15d15
     }
d15d15
@@ -249,12 +264,18 @@ IScsiCHAPOnRspReceived (
d15d15
       goto ON_EXIT;
d15d15
     }
d15d15
 
d15d15
-    Identifier = IScsiGetValueByKeyFromList (KeyValueList, ISCSI_KEY_CHAP_IDENTIFIER);
d15d15
+    Identifier = IScsiGetValueByKeyFromList (
d15d15
+                   KeyValueList,
d15d15
+                   ISCSI_KEY_CHAP_IDENTIFIER
d15d15
+                   );
d15d15
     if (Identifier == NULL) {
d15d15
       goto ON_EXIT;
d15d15
     }
d15d15
 
d15d15
-    Challenge = IScsiGetValueByKeyFromList (KeyValueList, ISCSI_KEY_CHAP_CHALLENGE);
d15d15
+    Challenge = IScsiGetValueByKeyFromList (
d15d15
+                  KeyValueList,
d15d15
+                  ISCSI_KEY_CHAP_CHALLENGE
d15d15
+                  );
d15d15
     if (Challenge == NULL) {
d15d15
       goto ON_EXIT;
d15d15
     }
d15d15
@@ -269,7 +290,11 @@ IScsiCHAPOnRspReceived (
d15d15
 
d15d15
     AuthData->InIdentifier      = (UINT32) Result;
d15d15
     AuthData->InChallengeLength = ISCSI_CHAP_AUTH_MAX_LEN;
d15d15
-    IScsiHexToBin ((UINT8 *) AuthData->InChallenge, &AuthData->InChallengeLength, Challenge);
d15d15
+    IScsiHexToBin (
d15d15
+      (UINT8 *) AuthData->InChallenge,
d15d15
+      &AuthData->InChallengeLength,
d15d15
+      Challenge
d15d15
+      );
d15d15
     Status = IScsiCHAPCalculateResponse (
d15d15
                AuthData->InIdentifier,
d15d15
                AuthData->AuthConfig->CHAPSecret,
d15d15
@@ -303,7 +328,10 @@ IScsiCHAPOnRspReceived (
d15d15
       goto ON_EXIT;
d15d15
     }
d15d15
 
d15d15
-    Response = IScsiGetValueByKeyFromList (KeyValueList, ISCSI_KEY_CHAP_RESPONSE);
d15d15
+    Response = IScsiGetValueByKeyFromList (
d15d15
+                 KeyValueList,
d15d15
+                 ISCSI_KEY_CHAP_RESPONSE
d15d15
+                 );
d15d15
     if (Response == NULL) {
d15d15
       goto ON_EXIT;
d15d15
     }
d15d15
@@ -341,7 +369,8 @@ ON_EXIT:
d15d15
   @param[in, out]  Pdu         The PDU to send out.
d15d15
 
d15d15
   @retval EFI_SUCCESS           All check passed and the phase-related CHAP
d15d15
-                                authentication info is filled into the iSCSI PDU.
d15d15
+                                authentication info is filled into the iSCSI
d15d15
+                                PDU.
d15d15
   @retval EFI_OUT_OF_RESOURCES  Failed to allocate memory.
d15d15
   @retval EFI_PROTOCOL_ERROR    Some kind of protocol error occurred.
d15d15
 
d15d15
@@ -392,7 +421,11 @@ IScsiCHAPToSendReq (
d15d15
     // It's the initial Login Request. Fill in the key=value pairs mandatory
d15d15
     // for the initial Login Request.
d15d15
     //
d15d15
-    IScsiAddKeyValuePair (Pdu, ISCSI_KEY_INITIATOR_NAME, mPrivate->InitiatorName);
d15d15
+    IScsiAddKeyValuePair (
d15d15
+      Pdu,
d15d15
+      ISCSI_KEY_INITIATOR_NAME,
d15d15
+      mPrivate->InitiatorName
d15d15
+      );
d15d15
     IScsiAddKeyValuePair (Pdu, ISCSI_KEY_SESSION_TYPE, "Normal");
d15d15
     IScsiAddKeyValuePair (
d15d15
       Pdu,
d15d15
@@ -413,7 +446,8 @@ IScsiCHAPToSendReq (
d15d15
 
d15d15
   case ISCSI_CHAP_STEP_ONE:
d15d15
     //
d15d15
-    // First step, send the Login Request with CHAP_A=<A1,A2...> key-value pair.
d15d15
+    // First step, send the Login Request with CHAP_A=<A1,A2...> key-value
d15d15
+    // pair.
d15d15
     //
d15d15
     AsciiSPrint (ValueStr, sizeof (ValueStr), "%d", ISCSI_CHAP_ALGORITHM_MD5);
d15d15
     IScsiAddKeyValuePair (Pdu, ISCSI_KEY_CHAP_ALGORITHM, ValueStr);
d15d15
@@ -429,11 +463,20 @@ IScsiCHAPToSendReq (
d15d15
     //
d15d15
     // CHAP_N=<N>
d15d15
     //
d15d15
-    IScsiAddKeyValuePair (Pdu, ISCSI_KEY_CHAP_NAME, (CHAR8 *) &AuthData->AuthConfig->CHAPName);
d15d15
+    IScsiAddKeyValuePair (
d15d15
+      Pdu,
d15d15
+      ISCSI_KEY_CHAP_NAME,
d15d15
+      (CHAR8 *) &AuthData->AuthConfig->CHAPName
d15d15
+      );
d15d15
     //
d15d15
     // CHAP_R=<R>
d15d15
     //
d15d15
-    IScsiBinToHex ((UINT8 *) AuthData->CHAPResponse, ISCSI_CHAP_RSP_LEN, Response, &RspLen);
d15d15
+    IScsiBinToHex (
d15d15
+      (UINT8 *) AuthData->CHAPResponse,
d15d15
+      ISCSI_CHAP_RSP_LEN,
d15d15
+      Response,
d15d15
+      &RspLen
d15d15
+      );
d15d15
     IScsiAddKeyValuePair (Pdu, ISCSI_KEY_CHAP_RESPONSE, Response);
d15d15
 
d15d15
     if (AuthData->AuthConfig->CHAPType == ISCSI_CHAP_MUTUAL) {
d15d15
@@ -448,7 +491,12 @@ IScsiCHAPToSendReq (
d15d15
       //
d15d15
       IScsiGenRandom ((UINT8 *) AuthData->OutChallenge, ISCSI_CHAP_RSP_LEN);
d15d15
       AuthData->OutChallengeLength = ISCSI_CHAP_RSP_LEN;
d15d15
-      IScsiBinToHex ((UINT8 *) AuthData->OutChallenge, ISCSI_CHAP_RSP_LEN, Challenge, &ChallengeLen);
d15d15
+      IScsiBinToHex (
d15d15
+        (UINT8 *) AuthData->OutChallenge,
d15d15
+        ISCSI_CHAP_RSP_LEN,
d15d15
+        Challenge,
d15d15
+        &ChallengeLen
d15d15
+        );
d15d15
       IScsiAddKeyValuePair (Pdu, ISCSI_KEY_CHAP_CHALLENGE, Challenge);
d15d15
 
d15d15
       Conn->AuthStep = ISCSI_CHAP_STEP_FOUR;
d15d15
diff --git a/NetworkPkg/IScsiDxe/IScsiCHAP.h b/NetworkPkg/IScsiDxe/IScsiCHAP.h
d15d15
index 140bba0dcd..5e59fb678b 100644
d15d15
--- a/NetworkPkg/IScsiDxe/IScsiCHAP.h
d15d15
+++ b/NetworkPkg/IScsiDxe/IScsiCHAP.h
d15d15
@@ -88,7 +88,8 @@ IScsiCHAPOnRspReceived (
d15d15
   @param[in, out]  Pdu         The PDU to send out.
d15d15
 
d15d15
   @retval EFI_SUCCESS           All check passed and the phase-related CHAP
d15d15
-                                authentication info is filled into the iSCSI PDU.
d15d15
+                                authentication info is filled into the iSCSI
d15d15
+                                PDU.
d15d15
   @retval EFI_OUT_OF_RESOURCES  Failed to allocate memory.
d15d15
   @retval EFI_PROTOCOL_ERROR    Some kind of protocol error occurred.
d15d15
 
d15d15
-- 
d15d15
2.27.0
d15d15