Skip to content

Commit bae0d90

Browse files
samples: matter: Fix Matter Bridge nullpointer failures
- Added check if the bridged device exists while getting its provider. - Properly unregistered Identify Cluster for the bridged device. Signed-off-by: Arkadiusz Balys <[email protected]>
1 parent a9accd7 commit bae0d90

File tree

2 files changed

+10
-4
lines changed

2 files changed

+10
-4
lines changed

applications/matter_bridge/src/core/bridge_manager.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -503,8 +503,10 @@ BridgedDeviceDataProvider *BridgeManager::GetProvider(EndpointId endpoint, uint1
503503
uint16_t endpointIndex = emberAfGetDynamicIndexFromEndpoint(endpoint);
504504
if (Instance().mDevicesMap.Contains(endpointIndex)) {
505505
BridgedDevicePair &bridgedDevices = Instance().mDevicesMap[endpointIndex];
506-
deviceType = bridgedDevices.mDevice->GetDeviceType();
507-
return bridgedDevices.mProvider;
506+
if (bridgedDevices.mDevice) {
507+
deviceType = bridgedDevices.mDevice->GetDeviceType();
508+
return bridgedDevices.mProvider;
509+
}
508510
}
509511
return nullptr;
510512
}

applications/matter_bridge/src/core/matter_bridged_device.h

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -110,12 +110,16 @@ class MatterBridgedDevice {
110110
memcpy(mNodeLabel, nodeLabel, strnlen(nodeLabel, Nrf::MatterBridgedDevice::kNodeLabelSize));
111111
}
112112
}
113-
virtual ~MatterBridgedDevice() {
113+
virtual ~MatterBridgedDevice()
114+
{
114115
if (mIdentifyCluster.IsConstructed()) {
116+
chip::app::CodegenDataModelProvider::Instance().Registry().Unregister(
117+
&mIdentifyCluster.Cluster());
115118
mIdentifyCluster.Destroy();
116119
}
117120

118-
chip::Platform::MemoryFree(mDataVersion); }
121+
chip::Platform::MemoryFree(mDataVersion);
122+
}
119123

120124
void Init(chip::EndpointId endpoint)
121125
{

0 commit comments

Comments
 (0)