[controller] fix 30260 (#30864)

diff --git a/src/controller/AutoCommissioner.cpp b/src/controller/AutoCommissioner.cpp
index 93247c3..82286e3 100644
--- a/src/controller/AutoCommissioner.cpp
+++ b/src/controller/AutoCommissioner.cpp
@@ -828,10 +828,10 @@
             return NOCChainGenerated(report.Get<NocChain>().noc, report.Get<NocChain>().icac, report.Get<NocChain>().rcac,
                                      report.Get<NocChain>().ipk, report.Get<NocChain>().adminSubject);
         case CommissioningStage::kICDGetRegistrationInfo:
-            // Noting to od. The ICD registation info is handled elsewhere.
+            // Noting to do. The ICD registation info is handled elsewhere.
             break;
         case CommissioningStage::kICDRegistration:
-            // Noting to od. DevicePairingDelegate will handle this.
+            // Noting to do. DevicePairingDelegate will handle this.
             break;
         case CommissioningStage::kICDSendStayActive:
             // Nothing to do.
diff --git a/src/controller/CHIPDeviceController.cpp b/src/controller/CHIPDeviceController.cpp
index 1713564..4959196 100644
--- a/src/controller/CHIPDeviceController.cpp
+++ b/src/controller/CHIPDeviceController.cpp
@@ -1177,19 +1177,25 @@
     void * context, const app::Clusters::IcdManagement::Commands::RegisterClientResponse::DecodableType & data)
 {
     DeviceCommissioner * commissioner = static_cast<DeviceCommissioner *>(context);
+    VerifyOrReturn(commissioner != nullptr, ChipLogProgress(Controller, "Command response callback with null context. Ignoring"));
 
+    if (commissioner->mCommissioningStage != CommissioningStage::kICDRegistration)
+    {
+        return;
+    }
+
+    if (commissioner->mDeviceBeingCommissioned == nullptr)
+    {
+        return;
+    }
+
+    if (commissioner->mPairingDelegate != nullptr)
+    {
+        commissioner->mPairingDelegate->OnICDRegistrationComplete(commissioner->mDeviceBeingCommissioned->GetDeviceId(),
+                                                                  data.ICDCounter);
+    }
     CommissioningDelegate::CommissioningReport report;
-    auto pairingDelegate         = commissioner->GetPairingDelegate();
-    auto deviceBeingCommissioned = commissioner->mDeviceBeingCommissioned;
-    if (pairingDelegate != nullptr && deviceBeingCommissioned != nullptr)
-    {
-        pairingDelegate->OnICDRegistrationComplete(deviceBeingCommissioned->GetDeviceId(), data.ICDCounter);
-        commissioner->CommissioningStageComplete(CHIP_NO_ERROR, report);
-    }
-    else
-    {
-        commissioner->CommissioningStageComplete(CHIP_ERROR_INCORRECT_STATE, report);
-    }
+    commissioner->CommissioningStageComplete(CHIP_NO_ERROR, report);
 }
 
 bool DeviceCommissioner::ExtendArmFailSafe(DeviceProxy * proxy, CommissioningStage step, uint16_t armFailSafeTimeout,