Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Bridge Example] Fix dangling pointer when AddDeviceEndpoint failed #33956

Merged
merged 2 commits into from
Jun 18, 2024
Merged

[Bridge Example] Fix dangling pointer when AddDeviceEndpoint failed #33956

merged 2 commits into from
Jun 18, 2024

Conversation

yufengwangca
Copy link
Contributor

Issue Summary: Inconsistent State of mDevices Array on Error Return
Description
In the current implementation of the DeviceManager::AddDeviceEndpoint function, there is a potential issue where the mDevices array can be left in an inconsistent state when errors occur. Specifically, when the function encounters an error and returns -1, it does not reset the mDevices[index] element back to nullptr. This can lead to the array containing invalid pointers, which can cause undefined behavior in subsequent operations.

Affected Function
DeviceManager::AddDeviceEndpoint

Fixes #33946

Copy link

github-actions bot commented Jun 17, 2024

PR #33956: Size comparison from 8ba371a to a439f41

Full report (51 builds for bl602, bl702, bl702l, cc13x4_26x4, cc32xx, cyw30739, esp32, linux, mbed, nrfconnect, nxp, psoc6, qpg, stm32, tizen)
platform target config section 8ba371a a439f41 change % change
bl602 lighting-app bl602 FLASH 1270530 1270530 0 0.0
RAM 95328 95328 0 0.0
bl602+mfd FLASH 1284808 1284808 0 0.0
RAM 95480 95480 0 0.0
bl602+rpc FLASH 1309730 1309730 0 0.0
RAM 103760 103760 0 0.0
bl702 lighting-app bl702 FLASH 1091426 1091426 0 0.0
RAM 14897 14897 0 0.0
bl702+mfd FLASH 1102120 1102120 0 0.0
RAM 15049 15049 0 0.0
bl702+rpc FLASH 1181236 1181236 0 0.0
RAM 23925 23925 0 0.0
bl706-eth FLASH 874770 874770 0 0.0
RAM 27016 27016 0 0.0
bl706-wifi FLASH 1127064 1127064 0 0.0
RAM 14349 14349 0 0.0
bl702l lighting-app bl702l FLASH 1078312 1078312 0 0.0
RAM 21468 21468 0 0.0
bl702l+mfd FLASH 1089574 1089574 0 0.0
RAM 21628 21628 0 0.0
cc13x4_26x4 lighting-app LP_EM_CC1354P10_6 FLASH 798076 798076 0 0.0
RAM 103088 103088 0 0.0
lock-ftd LP_EM_CC1354P10_6 FLASH 813752 813752 0 0.0
RAM 113568 113568 0 0.0
lock-mtd LP_EM_CC1354P10_6 FLASH 803268 803268 0 0.0
RAM 107688 107688 0 0.0
pump-app LP_EM_CC1354P10_6 FLASH 756060 756060 0 0.0
RAM 101788 101788 0 0.0
pump-controller-app LP_EM_CC1354P10_6 FLASH 741724 741724 0 0.0
RAM 102036 102036 0 0.0
cc32xx air-purifier CC3235SF_LAUNCHXL FLASH 605750 605750 0 0.0
RAM 204512 204512 0 0.0
lock CC3235SF_LAUNCHXL FLASH 650770 650770 0 0.0
RAM 204772 204772 0 0.0
cyw30739 light CYW30739B2-P5-EVK-01 unknown 2040 2040 0 0.0
FLASH 661673 661673 0 0.0
RAM 74512 74512 0 0.0
CYW30739B2-P5-EVK-02 unknown 2040 2040 0 0.0
FLASH 681517 681517 0 0.0
RAM 77144 77144 0 0.0
CYW30739B2-P5-EVK-03 unknown 2040 2040 0 0.0
FLASH 681517 681517 0 0.0
RAM 77144 77144 0 0.0
CYW930739M2EVB-02 unknown 2040 2040 0 0.0
FLASH 638453 638453 0 0.0
RAM 69580 69580 0 0.0
light-switch CYW30739B2-P5-EVK-01 unknown 2040 2040 0 0.0
FLASH 604137 604137 0 0.0
RAM 70216 70216 0 0.0
CYW30739B2-P5-EVK-02 unknown 2040 2040 0 0.0
FLASH 623773 623773 0 0.0
RAM 72768 72768 0 0.0
CYW30739B2-P5-EVK-03 unknown 2040 2040 0 0.0
FLASH 623773 623773 0 0.0
RAM 72768 72768 0 0.0
lock CYW30739B2-P5-EVK-01 unknown 2040 2040 0 0.0
FLASH 619641 619641 0 0.0
RAM 73232 73232 0 0.0
CYW30739B2-P5-EVK-02 unknown 2040 2040 0 0.0
FLASH 639357 639357 0 0.0
RAM 75784 75784 0 0.0
CYW30739B2-P5-EVK-03 unknown 2040 2040 0 0.0
FLASH 639357 639357 0 0.0
RAM 75784 75784 0 0.0
thermostat CYW30739B2-P5-EVK-01 unknown 2040 2040 0 0.0
FLASH 588213 588213 0 0.0
RAM 67200 67200 0 0.0
CYW30739B2-P5-EVK-02 unknown 2040 2040 0 0.0
FLASH 608073 608073 0 0.0
RAM 69832 69832 0 0.0
CYW30739B2-P5-EVK-03 unknown 2040 2040 0 0.0
FLASH 608073 608073 0 0.0
RAM 69832 69832 0 0.0
esp32 all-clusters-app c3devkit DRAM 88324 88324 0 0.0
FLASH 1468918 1468918 0 0.0
IRAM 75570 75570 0 0.0
m5stack DRAM 114796 114796 0 0.0
FLASH 1538067 1538067 0 0.0
IRAM 125403 125403 0 0.0
linux chip-tool-ipv6only arm64 unknown 19816 19816 0 0.0
FLASH 10663892 10663892 0 0.0
RAM 583416 583416 0 0.0
thermostat-no-ble arm64 unknown 9184 9184 0 0.0
FLASH 4152804 4152804 0 0.0
RAM 234608 234608 0 0.0
mbed lock-app-release cy8cproto_062_4343w FLASH 1497580 1497580 0 0.0
RAM 226072 226072 0 0.0
nrfconnect all-clusters-app nrf52840dk_nrf52840 FLASH 876200 876200 0 0.0
RAM 139129 139129 0 0.0
nrf7002dk_nrf5340_cpuapp FLASH 949232 949232 0 0.0
RAM 137557 137557 0 0.0
all-clusters-minimal-app nrf52840dk_nrf52840 FLASH 822416 822416 0 0.0
RAM 138027 138027 0 0.0
nxp contact k32w0+release FLASH 575604 575604 0 0.0
RAM 70024 70024 0 0.0
k32w1+release FLASH 590736 590736 0 0.0
RAM 74056 74056 0 0.0
light k32w0+release FLASH 609680 609680 0 0.0
RAM 69500 69500 0 0.0
k32w1+release FLASH 674224 674224 0 0.0
RAM 82808 82808 0 0.0
psoc6 all-clusters cy8ckit_062s2_43012 FLASH 1613428 1613428 0 0.0
RAM 207132 207132 0 0.0
all-clusters-minimal cy8ckit_062s2_43012 FLASH 1534228 1534228 0 0.0
RAM 204036 204036 0 0.0
light cy8ckit_062s2_43012 FLASH 1461092 1461092 0 0.0
RAM 197316 197316 0 0.0
lock cy8ckit_062s2_43012 FLASH 1462844 1462844 0 0.0
RAM 224380 224380 0 0.0
qpg lighting-app qpg6105+debug FLASH 650576 650576 0 0.0
RAM 104556 104556 0 0.0
lock-app qpg6105+debug FLASH 610700 610700 0 0.0
RAM 99232 99232 0 0.0
stm32 light STM32WB5MM-DK FLASH 472112 472112 0 0.0
RAM 141652 141652 0 0.0
tizen all-clusters-app arm unknown 1548 1548 0 0.0
FLASH 1621556 1621556 0 0.0
RAM 45420 45420 0 0.0
chip-tool-ubsan arm unknown 2360 2360 0 0.0
FLASH 15767058 15767058 0 0.0
RAM 6917600 6917600 0 0.0

@yufengwangca yufengwangca changed the title [Bridge Example] Fix dandling pointer when AddDeviceEndpoint failed [Bridge Example] Fix dangling pointer when AddDeviceEndpoint failed Jun 17, 2024
Copy link

github-actions bot commented Jun 17, 2024

PR #33956: Size comparison from 8ba371a to d8e99af

Full report (85 builds for bl602, bl702, bl702l, cc13x4_26x4, cc32xx, cyw30739, efr32, esp32, linux, mbed, nrfconnect, nxp, psoc6, qpg, stm32, telink, tizen)
platform target config section 8ba371a d8e99af change % change
bl602 lighting-app bl602 FLASH 1270530 1270530 0 0.0
RAM 95328 95328 0 0.0
bl602+mfd FLASH 1284808 1284808 0 0.0
RAM 95480 95480 0 0.0
bl602+rpc FLASH 1309730 1309730 0 0.0
RAM 103760 103760 0 0.0
bl702 lighting-app bl702 FLASH 1091426 1091426 0 0.0
RAM 14897 14897 0 0.0
bl702+mfd FLASH 1102120 1102120 0 0.0
RAM 15049 15049 0 0.0
bl702+rpc FLASH 1181236 1181236 0 0.0
RAM 23925 23925 0 0.0
bl706-eth FLASH 874770 874770 0 0.0
RAM 27016 27016 0 0.0
bl706-wifi FLASH 1127064 1127064 0 0.0
RAM 14349 14349 0 0.0
bl702l lighting-app bl702l FLASH 1078312 1078312 0 0.0
RAM 21468 21468 0 0.0
bl702l+mfd FLASH 1089574 1089574 0 0.0
RAM 21628 21628 0 0.0
cc13x4_26x4 lighting-app LP_EM_CC1354P10_6 FLASH 798076 798076 0 0.0
RAM 103088 103088 0 0.0
lock-ftd LP_EM_CC1354P10_6 FLASH 813752 813752 0 0.0
RAM 113568 113568 0 0.0
lock-mtd LP_EM_CC1354P10_6 FLASH 803268 803268 0 0.0
RAM 107688 107688 0 0.0
pump-app LP_EM_CC1354P10_6 FLASH 756060 756060 0 0.0
RAM 101788 101788 0 0.0
pump-controller-app LP_EM_CC1354P10_6 FLASH 741724 741724 0 0.0
RAM 102036 102036 0 0.0
cc32xx air-purifier CC3235SF_LAUNCHXL FLASH 605750 605750 0 0.0
RAM 204512 204512 0 0.0
lock CC3235SF_LAUNCHXL FLASH 650770 650770 0 0.0
RAM 204772 204772 0 0.0
cyw30739 light CYW30739B2-P5-EVK-01 unknown 2040 2040 0 0.0
FLASH 661673 661673 0 0.0
RAM 74512 74512 0 0.0
CYW30739B2-P5-EVK-02 unknown 2040 2040 0 0.0
FLASH 681517 681517 0 0.0
RAM 77144 77144 0 0.0
CYW30739B2-P5-EVK-03 unknown 2040 2040 0 0.0
FLASH 681517 681517 0 0.0
RAM 77144 77144 0 0.0
CYW930739M2EVB-02 unknown 2040 2040 0 0.0
FLASH 638453 638453 0 0.0
RAM 69580 69580 0 0.0
light-switch CYW30739B2-P5-EVK-01 unknown 2040 2040 0 0.0
FLASH 604137 604137 0 0.0
RAM 70216 70216 0 0.0
CYW30739B2-P5-EVK-02 unknown 2040 2040 0 0.0
FLASH 623773 623773 0 0.0
RAM 72768 72768 0 0.0
CYW30739B2-P5-EVK-03 unknown 2040 2040 0 0.0
FLASH 623773 623773 0 0.0
RAM 72768 72768 0 0.0
lock CYW30739B2-P5-EVK-01 unknown 2040 2040 0 0.0
FLASH 619641 619641 0 0.0
RAM 73232 73232 0 0.0
CYW30739B2-P5-EVK-02 unknown 2040 2040 0 0.0
FLASH 639357 639357 0 0.0
RAM 75784 75784 0 0.0
CYW30739B2-P5-EVK-03 unknown 2040 2040 0 0.0
FLASH 639357 639357 0 0.0
RAM 75784 75784 0 0.0
thermostat CYW30739B2-P5-EVK-01 unknown 2040 2040 0 0.0
FLASH 588213 588213 0 0.0
RAM 67200 67200 0 0.0
CYW30739B2-P5-EVK-02 unknown 2040 2040 0 0.0
FLASH 608073 608073 0 0.0
RAM 69832 69832 0 0.0
CYW30739B2-P5-EVK-03 unknown 2040 2040 0 0.0
FLASH 608073 608073 0 0.0
RAM 69832 69832 0 0.0
efr32 lighting-app BRD4187C FLASH 888232 888224 -8 -0.0
RAM 183424 183424 0 0.0
lock-app BRD4338a FLASH 699848 699848 0 0.0
RAM 242228 242228 0 0.0
window-app BRD4187C FLASH 969748 969748 0 0.0
RAM 167856 167856 0 0.0
esp32 all-clusters-app c3devkit DRAM 88324 88324 0 0.0
FLASH 1468918 1468918 0 0.0
IRAM 75570 75570 0 0.0
m5stack DRAM 114796 114796 0 0.0
FLASH 1538067 1538067 0 0.0
IRAM 125403 125403 0 0.0
linux air-purifier-app debug unknown 4568 4568 0 0.0
FLASH 2535024 2535024 0 0.0
RAM 129072 129072 0 0.0
all-clusters-app debug unknown 5344 5344 0 0.0
FLASH 5581550 5581550 0 0.0
RAM 483272 483272 0 0.0
all-clusters-minimal-app debug unknown 5264 5264 0 0.0
FLASH 5054984 5054984 0 0.0
RAM 236824 236824 0 0.0
bridge-app debug unknown 5232 5232 0 0.0
FLASH 4480632 4480664 32 0.0
RAM 216736 216736 0 0.0
chip-tool debug unknown 5744 5744 0 0.0
FLASH 11527527 11527527 0 0.0
RAM 535450 535450 0 0.0
chip-tool-ipv6only arm64 unknown 19816 19816 0 0.0
FLASH 10663892 10663892 0 0.0
RAM 583416 583416 0 0.0
fabric-admin debug unknown 5600 5600 0 0.0
FLASH 11297095 11297095 0 0.0
RAM 529042 529042 0 0.0
fabric-bridge-app debug unknown 5240 5240 0 0.0
FLASH 4350568 4350568 0 0.0
RAM 208784 208784 0 0.0
lighting-app debug+rpc+ui unknown 5880 5880 0 0.0
FLASH 5377746 5377746 0 0.0
RAM 225640 225640 0 0.0
lock-app debug unknown 5184 5184 0 0.0
FLASH 4544296 4544296 0 0.0
RAM 204192 204192 0 0.0
ota-provider-app debug unknown 4552 4552 0 0.0
FLASH 4180008 4180008 0 0.0
RAM 193216 193216 0 0.0
ota-requestor-app debug unknown 4488 4488 0 0.0
FLASH 4305496 4305496 0 0.0
RAM 197872 197872 0 0.0
shell debug unknown 4112 4112 0 0.0
FLASH 2801965 2801965 0 0.0
RAM 154416 154416 0 0.0
thermostat-no-ble arm64 unknown 9184 9184 0 0.0
FLASH 4152804 4152804 0 0.0
RAM 234608 234608 0 0.0
tv-app debug unknown 5472 5472 0 0.0
FLASH 5597304 5597304 0 0.0
RAM 345672 345672 0 0.0
tv-casting-app debug unknown 5104 5104 0 0.0
FLASH 9572774 9572774 0 0.0
RAM 352816 352816 0 0.0
mbed lock-app-release cy8cproto_062_4343w FLASH 1497580 1497580 0 0.0
RAM 226072 226072 0 0.0
nrfconnect all-clusters-app nrf52840dk_nrf52840 FLASH 876200 876200 0 0.0
RAM 139129 139129 0 0.0
nrf7002dk_nrf5340_cpuapp FLASH 949232 949232 0 0.0
RAM 137557 137557 0 0.0
all-clusters-minimal-app nrf52840dk_nrf52840 FLASH 822416 822416 0 0.0
RAM 138027 138027 0 0.0
nxp contact k32w0+release FLASH 575604 575604 0 0.0
RAM 70024 70024 0 0.0
k32w1+release FLASH 590736 590736 0 0.0
RAM 74056 74056 0 0.0
light k32w0+release FLASH 609680 609680 0 0.0
RAM 69500 69500 0 0.0
k32w1+release FLASH 674224 674224 0 0.0
RAM 82808 82808 0 0.0
psoc6 all-clusters cy8ckit_062s2_43012 FLASH 1613428 1613428 0 0.0
RAM 207132 207132 0 0.0
all-clusters-minimal cy8ckit_062s2_43012 FLASH 1534228 1534228 0 0.0
RAM 204036 204036 0 0.0
light cy8ckit_062s2_43012 FLASH 1461092 1461092 0 0.0
RAM 197316 197316 0 0.0
lock cy8ckit_062s2_43012 FLASH 1462844 1462844 0 0.0
RAM 224380 224380 0 0.0
qpg lighting-app qpg6105+debug FLASH 650576 650576 0 0.0
RAM 104556 104556 0 0.0
lock-app qpg6105+debug FLASH 610700 610700 0 0.0
RAM 99232 99232 0 0.0
stm32 light STM32WB5MM-DK FLASH 472112 472112 0 0.0
RAM 141652 141652 0 0.0
telink air-quality-sensor-app tlsr9528a_retention FLASH 625532 625532 0 0.0
RAM 49904 49904 0 0.0
all-clusters-app tlsr9118bdk40d FLASH 602572 602572 0 0.0
RAM 130288 130288 0 0.0
all-clusters-minimal-app tlsr9528a FLASH 770694 770694 0 0.0
RAM 110052 110052 0 0.0
bridge-app tlsr9258a FLASH 668618 668618 0 0.0
RAM 94672 94672 0 0.0
contact-sensor-app tlsr9528a_retention FLASH 627254 627254 0 0.0
RAM 49948 49948 0 0.0
light-switch-app-ota-shell-factory-data tlsr9528a FLASH 713368 713368 0 0.0
RAM 76540 76540 0 0.0
lighting-app-ota-factory-data tlsr9118bdk40d FLASH 558240 558240 0 0.0
RAM 126544 126544 0 0.0
lighting-app-ota-rpc-factory-data-4mb tlsr9518adk80d FLASH 793320 793320 0 0.0
RAM 99900 99900 0 0.0
lock-app-dfu tlsr9528a FLASH 660356 660356 0 0.0
RAM 69228 69228 0 0.0
ota-requestor-app tlsr9258a FLASH 687236 687236 0 0.0
RAM 94396 94396 0 0.0
pump-app tlsr9518adk80d FLASH 609474 609474 0 0.0
RAM 56328 56328 0 0.0
pump-controller-app tlsr9518adk80d FLASH 599860 599860 0 0.0
RAM 56128 56128 0 0.0
shell tlsr9518adk80d FLASH 462614 462614 0 0.0
RAM 71852 71852 0 0.0
smoke_co_alarm-app tlsr9528a_retention FLASH 633616 633616 0 0.0
RAM 51576 51576 0 0.0
temperature-measurement-app-mars-ota tlsr9518adk80d FLASH 642974 642974 0 0.0
RAM 59764 59764 0 0.0
thermostat tlsr9518adk80d FLASH 618750 618750 0 0.0
RAM 56452 56452 0 0.0
window-covering tlsr9118bdk40d FLASH 464942 464942 0 0.0
RAM 82224 82224 0 0.0
tizen all-clusters-app arm unknown 1548 1548 0 0.0
FLASH 1621556 1621556 0 0.0
RAM 45420 45420 0 0.0
chip-tool-ubsan arm unknown 2360 2360 0 0.0
FLASH 15767058 15767058 0 0.0
RAM 6917600 6917600 0 0.0

@mergify mergify bot merged commit 6cf8de8 into project-chip:master Jun 18, 2024
68 checks passed
diogopintodsr pushed a commit to diogopintodsr/connectedhomeip that referenced this pull request Jun 20, 2024
…roject-chip#33956)

* Fix dandling pointer when AddDeviceEndpoint failed

* Remove code never be excuted
@yufengwangca yufengwangca deleted the pr/fabric_bridge/device branch July 2, 2024 16:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[BUG] Inconsistent State of mDevices Array on Error Return in Bridge Example
4 participants