Skip to content

[CHIPTOOL] Fix AddArgument for ByteSpan when content is hexstring #38838

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

Closed

Conversation

kliffwong
Copy link

@kliffwong kliffwong commented May 9, 2025

  • For TRV cluster PresetHandle and ScheduleHandle, argument is ByteSpan type but converted to hexstring before sending to node
  • Fix capture ByteSpan argument begins with "hex:" and perform conversion

Testing

  • Manual Testing
  • ./chip-tool thermostat set-active-preset-request hex:<Handle> <nodeid> <endpoint>
  • ./chip-tool thermostat set-active-schedule-request hex:<Handle> <nodeid> <endpoint>
  • Originally the above command will send the <Handle> as String to the node, which does not comply with the format used in ./chip-tool thermostat write presets/schedules <arg> <nodeid> <endpoint>
  • The node should receive a ByteSpan with length half of <Handle> and already parse the <Handle> from HexString to number with this fix

@CLAassistant
Copy link

CLAassistant commented May 9, 2025

CLA assistant check
All committers have signed the CLA.

@kliffwong kliffwong force-pushed the mr/fix-chiptool-bytespan branch from aeb453c to d9330a2 Compare May 9, 2025 13:32
Copy link

github-actions bot commented May 9, 2025

PR #38838: Size comparison from 1f6aada to d9330a2

Full report (46 builds for bl602, bl702, bl702l, cc13x4_26x4, cc32xx, cyw30739, nrfconnect, psoc6, qpg, stm32, telink, tizen)
platform target config section 1f6aada d9330a2 change % change
bl602 lighting-app bl602+mfd+littlefs+rpc FLASH 1103014 1103014 0 0.0
RAM 94866 94866 0 0.0
bl702 lighting-app bl702+eth FLASH 657860 657860 0 0.0
RAM 33637 33637 0 0.0
bl702+wifi FLASH 834858 834858 0 0.0
RAM 22361 22361 0 0.0
bl706+mfd+rpc+littlefs FLASH 1067638 1067638 0 0.0
RAM 32285 32285 0 0.0
bl702l contact-sensor-app bl702l+mfd+littlefs FLASH 898530 898530 0 0.0
RAM 27024 27024 0 0.0
lighting-app bl702l+mfd+littlefs FLASH 981314 981314 0 0.0
RAM 24772 24772 0 0.0
cc13x4_26x4 lighting-app LP_EM_CC1354P10_6 FLASH 822236 822236 0 0.0
RAM 120296 120296 0 0.0
lock-ftd LP_EM_CC1354P10_6 FLASH 832000 832000 0 0.0
RAM 125432 125432 0 0.0
pump-app LP_EM_CC1354P10_6 FLASH 778432 778432 0 0.0
RAM 113780 113780 0 0.0
pump-controller-app LP_EM_CC1354P10_6 FLASH 762756 762756 0 0.0
RAM 113988 113988 0 0.0
cc32xx air-purifier CC3235SF_LAUNCHXL FLASH 549098 549098 0 0.0
RAM 205192 205192 0 0.0
lock CC3235SF_LAUNCHXL FLASH 581146 581146 0 0.0
RAM 205440 205440 0 0.0
cyw30739 light CYW30739B2-P5-EVK-01 unknown 2040 2040 0 0.0
FLASH 663821 663821 0 0.0
RAM 77324 77324 0 0.0
CYW30739B2-P5-EVK-02 unknown 2040 2040 0 0.0
FLASH 683673 683673 0 0.0
RAM 79964 79964 0 0.0
CYW30739B2-P5-EVK-03 unknown 2040 2040 0 0.0
FLASH 683673 683673 0 0.0
RAM 79964 79964 0 0.0
CYW930739M2EVB-02 unknown 2040 2040 0 0.0
FLASH 640605 640605 0 0.0
RAM 72392 72392 0 0.0
light-switch CYW30739B2-P5-EVK-01 unknown 2040 2040 0 0.0
FLASH 623949 623949 0 0.0
RAM 73564 73564 0 0.0
CYW30739B2-P5-EVK-02 unknown 2040 2040 0 0.0
FLASH 643593 643593 0 0.0
RAM 76116 76116 0 0.0
CYW30739B2-P5-EVK-03 unknown 2040 2040 0 0.0
FLASH 643593 643593 0 0.0
RAM 76116 76116 0 0.0
lock CYW30739B2-P5-EVK-01 unknown 2040 2040 0 0.0
FLASH 644213 644213 0 0.0
RAM 76588 76588 0 0.0
CYW30739B2-P5-EVK-02 unknown 2040 2040 0 0.0
FLASH 663929 663929 0 0.0
RAM 79140 79140 0 0.0
CYW30739B2-P5-EVK-03 unknown 2040 2040 0 0.0
FLASH 663929 663929 0 0.0
RAM 79140 79140 0 0.0
thermostat CYW30739B2-P5-EVK-01 unknown 2040 2040 0 0.0
FLASH 620625 620625 0 0.0
RAM 70684 70684 0 0.0
CYW30739B2-P5-EVK-02 unknown 2040 2040 0 0.0
FLASH 640477 640477 0 0.0
RAM 73316 73316 0 0.0
CYW30739B2-P5-EVK-03 unknown 2040 2040 0 0.0
FLASH 640477 640477 0 0.0
RAM 73316 73316 0 0.0
nrfconnect all-clusters-app nrf52840dk_nrf52840 FLASH 919696 919696 0 0.0
RAM 167328 167328 0 0.0
nrf7002dk_nrf5340_cpuapp FLASH 911704 911704 0 0.0
RAM 145572 145572 0 0.0
all-clusters-minimal-app nrf52840dk_nrf52840 FLASH 856360 856360 0 0.0
RAM 141091 141091 0 0.0
psoc6 all-clusters cy8ckit_062s2_43012 FLASH 1666100 1666100 0 0.0
RAM 212328 212328 0 0.0
all-clusters-minimal cy8ckit_062s2_43012 FLASH 1570620 1570620 0 0.0
RAM 208504 208504 0 0.0
light cy8ckit_062s2_43012 FLASH 1447892 1447892 0 0.0
RAM 197320 197320 0 0.0
lock cy8ckit_062s2_43012 FLASH 1477732 1477732 0 0.0
RAM 225016 225016 0 0.0
qpg lighting-app qpg6105+debug FLASH 667756 667756 0 0.0
RAM 105200 105200 0 0.0
lock-app qpg6105+debug FLASH 626128 626128 0 0.0
RAM 99820 99820 0 0.0
stm32 light STM32WB5MM-DK FLASH 466596 466596 0 0.0
RAM 141504 141504 0 0.0
telink bridge-app tl7218x FLASH 694018 677284 -16734 -2.4
RAM 101832 90692 -11140 -10.9
light-app-ota-compress-lzma-factory-data tl3218x FLASH 774650 774650 0 0.0
RAM 50072 50072 0 0.0
light-app-ota-compress-lzma-shell-factory-data tl3218x FLASH 771766 771766 0 0.0
RAM 40372 40372 0 0.0
light-app-ota-shell-factory-data tl7218x FLASH 781756 760222 -21534 -2.8
RAM 109252 97492 -11760 -10.8
light-switch-app-ota-compress-lzma-factory-data tl7218x_retention FLASH 703134 687260 -15874 -2.3
RAM 62572 51540 -11032 -17.6
light-switch-app-ota-compress-lzma-shell-factory-data tlsr9528a FLASH 741088 715710 -25378 -3.4
RAM 85752 73360 -12392 -14.5
light-switch-app-ota-shell-factory-data tl3218x_retention FLASH 713038 713038 0 0.0
RAM 36996 36996 0 0.0
lighting-app-ota-factory-data tlsr9118bdk40d FLASH 608202 608660 458 0.1
RAM 119468 106748 -12720 -10.6
lighting-app-ota-rpc-factory-data-4mb tlsr9518adk80d FLASH 817018 795228 -21790 -2.7
RAM 107520 96348 -11172 -10.4
tizen all-clusters-app arm unknown 5176 5176 0 0.0
FLASH 1810200 1810200 0 0.0
RAM 94656 94656 0 0.0
chip-tool-ubsan arm unknown 20600 20600 0 0.0
FLASH 20843606 20844606 1000 0.0
RAM 9071080 9071384 304 0.0

@kliffwong kliffwong force-pushed the mr/fix-chiptool-bytespan branch from d9330a2 to 9041fa4 Compare May 9, 2025 14:38
Copy link

github-actions bot commented May 9, 2025

PR #38838: Size comparison from 1f6aada to 9041fa4

Full report (3 builds for cc32xx, stm32)
platform target config section 1f6aada 9041fa4 change % change
cc32xx air-purifier CC3235SF_LAUNCHXL FLASH 549098 549098 0 0.0
RAM 205192 205192 0 0.0
lock CC3235SF_LAUNCHXL FLASH 581146 581146 0 0.0
RAM 205440 205440 0 0.0
stm32 light STM32WB5MM-DK FLASH 466596 466596 0 0.0
RAM 141504 141504 0 0.0

Copy link

github-actions bot commented May 9, 2025

PR #38838: Size comparison from 1f6aada to 6f84ec7

Full report (75 builds for bl602, bl702, bl702l, cc13x4_26x4, cc32xx, cyw30739, efr32, esp32, linux, nrfconnect, nxp, psoc6, qpg, stm32, telink, tizen)
platform target config section 1f6aada 6f84ec7 change % change
bl602 lighting-app bl602+mfd+littlefs+rpc FLASH 1103014 1103014 0 0.0
RAM 94866 94866 0 0.0
bl702 lighting-app bl702+eth FLASH 657860 657860 0 0.0
RAM 33637 33637 0 0.0
bl702+wifi FLASH 834858 834858 0 0.0
RAM 22361 22361 0 0.0
bl706+mfd+rpc+littlefs FLASH 1067638 1067638 0 0.0
RAM 32285 32285 0 0.0
bl702l contact-sensor-app bl702l+mfd+littlefs FLASH 898530 898530 0 0.0
RAM 27024 27024 0 0.0
lighting-app bl702l+mfd+littlefs FLASH 981314 981314 0 0.0
RAM 24772 24772 0 0.0
cc13x4_26x4 lighting-app LP_EM_CC1354P10_6 FLASH 822236 822236 0 0.0
RAM 120296 120296 0 0.0
lock-ftd LP_EM_CC1354P10_6 FLASH 832000 832000 0 0.0
RAM 125432 125432 0 0.0
pump-app LP_EM_CC1354P10_6 FLASH 778432 778432 0 0.0
RAM 113780 113780 0 0.0
pump-controller-app LP_EM_CC1354P10_6 FLASH 762756 762756 0 0.0
RAM 113988 113988 0 0.0
cc32xx air-purifier CC3235SF_LAUNCHXL FLASH 549098 549098 0 0.0
RAM 205192 205192 0 0.0
lock CC3235SF_LAUNCHXL FLASH 581146 581146 0 0.0
RAM 205440 205440 0 0.0
cyw30739 light CYW30739B2-P5-EVK-01 unknown 2040 2040 0 0.0
FLASH 663821 663821 0 0.0
RAM 77324 77324 0 0.0
CYW30739B2-P5-EVK-02 unknown 2040 2040 0 0.0
FLASH 683673 683673 0 0.0
RAM 79964 79964 0 0.0
CYW30739B2-P5-EVK-03 unknown 2040 2040 0 0.0
FLASH 683673 683673 0 0.0
RAM 79964 79964 0 0.0
CYW930739M2EVB-02 unknown 2040 2040 0 0.0
FLASH 640605 640605 0 0.0
RAM 72392 72392 0 0.0
light-switch CYW30739B2-P5-EVK-01 unknown 2040 2040 0 0.0
FLASH 623949 623949 0 0.0
RAM 73564 73564 0 0.0
CYW30739B2-P5-EVK-02 unknown 2040 2040 0 0.0
FLASH 643593 643593 0 0.0
RAM 76116 76116 0 0.0
CYW30739B2-P5-EVK-03 unknown 2040 2040 0 0.0
FLASH 643593 643593 0 0.0
RAM 76116 76116 0 0.0
lock CYW30739B2-P5-EVK-01 unknown 2040 2040 0 0.0
FLASH 644213 644213 0 0.0
RAM 76588 76588 0 0.0
CYW30739B2-P5-EVK-02 unknown 2040 2040 0 0.0
FLASH 663929 663929 0 0.0
RAM 79140 79140 0 0.0
CYW30739B2-P5-EVK-03 unknown 2040 2040 0 0.0
FLASH 663929 663929 0 0.0
RAM 79140 79140 0 0.0
thermostat CYW30739B2-P5-EVK-01 unknown 2040 2040 0 0.0
FLASH 620625 620625 0 0.0
RAM 70684 70684 0 0.0
CYW30739B2-P5-EVK-02 unknown 2040 2040 0 0.0
FLASH 640477 640477 0 0.0
RAM 73316 73316 0 0.0
CYW30739B2-P5-EVK-03 unknown 2040 2040 0 0.0
FLASH 640477 640477 0 0.0
RAM 73316 73316 0 0.0
efr32 lock-app BRD4187C FLASH 946684 946684 0 0.0
RAM 132096 132096 0 0.0
BRD4338a FLASH 773616 773616 0 0.0
RAM 173328 173328 0 0.0
window-app BRD4187C FLASH 1039608 1039600 -8 -0.0
RAM 128232 128232 0 0.0
esp32 all-clusters-app c3devkit DRAM 103328 103328 0 0.0
FLASH 1806238 1806238 0 0.0
IRAM 83846 83846 0 0.0
m5stack DRAM 121932 121932 0 0.0
FLASH 1771346 1771346 0 0.0
IRAM 117043 117043 0 0.0
linux air-purifier-app debug unknown 4848 4848 0 0.0
FLASH 2783519 2783519 0 0.0
RAM 114680 114680 0 0.0
all-clusters-app debug unknown 5656 5656 0 0.0
FLASH 6337352 6337352 0 0.0
RAM 537624 537624 0 0.0
all-clusters-minimal-app debug unknown 5528 5528 0 0.0
FLASH 5441478 5441478 0 0.0
RAM 224616 224616 0 0.0
bridge-app debug unknown 5560 5560 0 0.0
FLASH 4758036 4758036 0 0.0
RAM 204272 204272 0 0.0
camera-app debug unknown 8856 8856 0 0.0
FLASH 6892827 6892827 0 0.0
RAM 226448 226448 0 0.0
camera-controller debug unknown 9240 9240 0 0.0
FLASH 14317099 14317099 0 0.0
RAM 663280 663280 0 0.0
chip-tool debug unknown 6256 6256 0 0.0
FLASH 14604557 14605591 1034 0.0
RAM 650032 650032 0 0.0
chip-tool-ipv6only arm64 unknown 40328 40328 0 0.0
FLASH 12582272 12583216 944 0.0
RAM 696336 696336 0 0.0
fabric-admin debug unknown 5936 5936 0 0.0
FLASH 12676169 12676169 0 0.0
RAM 649392 649392 0 0.0
fabric-bridge-app debug unknown 4808 4808 0 0.0
FLASH 4574910 4574910 0 0.0
RAM 190312 190312 0 0.0
fabric-sync debug unknown 5064 5064 0 0.0
FLASH 5715525 5715525 0 0.0
RAM 491032 491032 0 0.0
lighting-app debug+rpc+ui unknown 6264 6264 0 0.0
FLASH 5644449 5644449 0 0.0
RAM 207288 207288 0 0.0
lock-app debug unknown 5496 5496 0 0.0
FLASH 4817898 4817898 0 0.0
RAM 194520 194520 0 0.0
ota-provider-app debug unknown 4848 4848 0 0.0
FLASH 4437690 4437690 0 0.0
RAM 183752 183752 0 0.0
ota-requestor-app debug unknown 4800 4800 0 0.0
FLASH 4565458 4565458 0 0.0
RAM 187656 187656 0 0.0
shell debug unknown 4272 4272 0 0.0
FLASH 3079148 3079148 0 0.0
RAM 148072 148072 0 0.0
thermostat-no-ble arm64 unknown 9552 9552 0 0.0
FLASH 4229568 4229568 0 0.0
RAM 231024 231024 0 0.0
tv-app debug unknown 5832 5832 0 0.0
FLASH 6072693 6072693 0 0.0
RAM 615680 615680 0 0.0
tv-casting-app debug unknown 5416 5416 0 0.0
FLASH 12793021 12794045 1024 0.0
RAM 770120 770120 0 0.0
nrfconnect all-clusters-app nrf52840dk_nrf52840 FLASH 919696 919696 0 0.0
RAM 167328 167328 0 0.0
nrf7002dk_nrf5340_cpuapp FLASH 911704 911704 0 0.0
RAM 145572 145572 0 0.0
all-clusters-minimal-app nrf52840dk_nrf52840 FLASH 856360 856360 0 0.0
RAM 141091 141091 0 0.0
nxp contact k32w0+release FLASH 592368 592368 0 0.0
RAM 72848 72848 0 0.0
mcxw71+release FLASH 624616 624616 0 0.0
RAM 63188 63188 0 0.0
light k32w0+release FLASH 618316 618316 0 0.0
RAM 72144 72144 0 0.0
k32w1+release FLASH 709096 709096 0 0.0
RAM 72036 72036 0 0.0
lock mcxw71+release FLASH 774112 774112 0 0.0
RAM 67612 67612 0 0.0
psoc6 all-clusters cy8ckit_062s2_43012 FLASH 1666100 1666100 0 0.0
RAM 212328 212328 0 0.0
all-clusters-minimal cy8ckit_062s2_43012 FLASH 1570620 1570620 0 0.0
RAM 208504 208504 0 0.0
light cy8ckit_062s2_43012 FLASH 1447892 1447892 0 0.0
RAM 197320 197320 0 0.0
lock cy8ckit_062s2_43012 FLASH 1477732 1477732 0 0.0
RAM 225016 225016 0 0.0
qpg lighting-app qpg6105+debug FLASH 667756 667756 0 0.0
RAM 105200 105200 0 0.0
lock-app qpg6105+debug FLASH 626128 626128 0 0.0
RAM 99820 99820 0 0.0
stm32 light STM32WB5MM-DK FLASH 466596 466596 0 0.0
RAM 141504 141504 0 0.0
telink bridge-app tl7218x FLASH 694018 677284 -16734 -2.4
694018 694018 0 0.0
RAM 101832 90692 -11140 -10.9
101832 101832 0 0.0
light-app-ota-compress-lzma-factory-data tl3218x FLASH 774650 774650 0 0.0
RAM 50072 50072 0 0.0
light-app-ota-compress-lzma-shell-factory-data tl3218x FLASH 771766 771766 0 0.0
RAM 40372 40372 0 0.0
light-app-ota-shell-factory-data tl7218x FLASH 781756 760222 -21534 -2.8
781756 781756 0 0.0
RAM 109252 97492 -11760 -10.8
109252 109252 0 0.0
light-switch-app-ota-compress-lzma-factory-data tl7218x_retention FLASH 703134 687260 -15874 -2.3
703134 703134 0 0.0
RAM 62572 51540 -11032 -17.6
62572 62572 0 0.0
light-switch-app-ota-compress-lzma-shell-factory-data tlsr9528a FLASH 741088 715710 -25378 -3.4
741088 741088 0 0.0
RAM 85752 73360 -12392 -14.5
85752 85752 0 0.0
light-switch-app-ota-shell-factory-data tl3218x_retention FLASH 713038 713038 0 0.0
RAM 36996 36996 0 0.0
lighting-app-ota-factory-data tlsr9118bdk40d FLASH 608202 608660 458 0.1
608202 608202 0 0.0
RAM 119468 106748 -12720 -10.6
119468 119468 0 0.0
lighting-app-ota-rpc-factory-data-4mb tlsr9518adk80d FLASH 817018 795228 -21790 -2.7
817018 817022 4 0.0
RAM 107520 96348 -11172 -10.4
107520 107520 0 0.0
tizen all-clusters-app arm unknown 5176 5176 0 0.0
FLASH 1810200 1810200 0 0.0
RAM 94656 94656 0 0.0
chip-tool-ubsan arm unknown 20600 20600 0 0.0
FLASH 20843606 20844614 1008 0.0
RAM 9071080 9071384 304 0.0

Copy link
Contributor

@andy31415 andy31415 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Request changes: pointer to value on the stack seems to escape.


if (err != CHIP_NO_ERROR)
{
if (buffer != nullptr)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's log the error.


arg.type = ArgumentType::OctetString;
arg.name = name;
arg.value = reinterpret_cast<void *>(&newValue);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You are passing in a void pointer to a value on the stack. That cannot be good. How was this tested?

@andy31415
Copy link
Contributor

@kliffwong the statement Tested manually is insufficient. You need to provide detailed description on what commands you ran and observed results and how that proves that your fix is ok. We try to set the manual testing bar high so that both (a) others can reproduce and (b) discourage people from writing "tested manually" because it is tedious to write automated tests.

Since this is in test code (i.e. chip tool) it seems generally ok to just have manual test, but it does have to be described in detail.

Copy link

github-actions bot commented May 12, 2025

PR #38838: Size comparison from d0ac18d to 1afec32

Full report (73 builds for bl602, bl702, bl702l, cc13x4_26x4, cc32xx, cyw30739, efr32, esp32, linux, nrfconnect, nxp, psoc6, qpg, stm32, telink, tizen)
platform target config section d0ac18d 1afec32 change % change
bl602 lighting-app bl602+mfd+littlefs+rpc FLASH 1102286 1102286 0 0.0
RAM 179026 179026 0 0.0
bl702 lighting-app bl702+eth FLASH 656842 656842 0 0.0
RAM 134973 134973 0 0.0
bl702+wifi FLASH 834096 834096 0 0.0
RAM 124513 124513 0 0.0
bl706+mfd+rpc+littlefs FLASH 1066952 1066952 0 0.0
RAM 117381 117381 0 0.0
bl702l contact-sensor-app bl702l+mfd+littlefs FLASH 897768 897768 0 0.0
RAM 105792 105792 0 0.0
lighting-app bl702l+mfd+littlefs FLASH 980552 980552 0 0.0
RAM 109868 109868 0 0.0
cc13x4_26x4 lighting-app LP_EM_CC1354P10_6 FLASH 821716 821716 0 0.0
RAM 120296 120296 0 0.0
lock-ftd LP_EM_CC1354P10_6 FLASH 831512 831512 0 0.0
RAM 125432 125432 0 0.0
pump-app LP_EM_CC1354P10_6 FLASH 778416 778416 0 0.0
RAM 113780 113780 0 0.0
pump-controller-app LP_EM_CC1354P10_6 FLASH 762732 762732 0 0.0
RAM 113988 113988 0 0.0
cc32xx air-purifier CC3235SF_LAUNCHXL FLASH 549002 549002 0 0.0
RAM 205192 205192 0 0.0
lock CC3235SF_LAUNCHXL FLASH 581050 581050 0 0.0
RAM 205440 205440 0 0.0
cyw30739 light CYW30739B2-P5-EVK-01 unknown 2040 2040 0 0.0
FLASH 663253 663253 0 0.0
RAM 77324 77324 0 0.0
CYW30739B2-P5-EVK-02 unknown 2040 2040 0 0.0
FLASH 683105 683105 0 0.0
RAM 79964 79964 0 0.0
CYW30739B2-P5-EVK-03 unknown 2040 2040 0 0.0
FLASH 683105 683105 0 0.0
RAM 79964 79964 0 0.0
CYW930739M2EVB-02 unknown 2040 2040 0 0.0
FLASH 640045 640045 0 0.0
RAM 72392 72392 0 0.0
light-switch CYW30739B2-P5-EVK-01 unknown 2040 2040 0 0.0
FLASH 623397 623397 0 0.0
RAM 73564 73564 0 0.0
CYW30739B2-P5-EVK-02 unknown 2040 2040 0 0.0
FLASH 643033 643033 0 0.0
RAM 76116 76116 0 0.0
CYW30739B2-P5-EVK-03 unknown 2040 2040 0 0.0
FLASH 643033 643033 0 0.0
RAM 76116 76116 0 0.0
lock CYW30739B2-P5-EVK-01 unknown 2040 2040 0 0.0
FLASH 643701 643701 0 0.0
RAM 76588 76588 0 0.0
CYW30739B2-P5-EVK-02 unknown 2040 2040 0 0.0
FLASH 663417 663417 0 0.0
RAM 79140 79140 0 0.0
CYW30739B2-P5-EVK-03 unknown 2040 2040 0 0.0
FLASH 663417 663417 0 0.0
RAM 79140 79140 0 0.0
thermostat CYW30739B2-P5-EVK-01 unknown 2040 2040 0 0.0
FLASH 620057 620057 0 0.0
RAM 70684 70684 0 0.0
CYW30739B2-P5-EVK-02 unknown 2040 2040 0 0.0
FLASH 639909 639909 0 0.0
RAM 73316 73316 0 0.0
CYW30739B2-P5-EVK-03 unknown 2040 2040 0 0.0
FLASH 639909 639909 0 0.0
RAM 73316 73316 0 0.0
efr32 lock-app BRD4187C FLASH 946276 946276 0 0.0
RAM 132096 132096 0 0.0
BRD4338a FLASH 772800 772792 -8 -0.0
RAM 173328 173328 0 0.0
window-app BRD4187C FLASH 1038760 1038760 0 0.0
RAM 128232 128232 0 0.0
esp32 all-clusters-app c3devkit DRAM 103328 103328 0 0.0
FLASH 1805448 1805448 0 0.0
IRAM 83846 83846 0 0.0
m5stack DRAM 121932 121932 0 0.0
FLASH 1770642 1770642 0 0.0
IRAM 117043 117043 0 0.0
linux air-purifier-app debug unknown 4848 4848 0 0.0
FLASH 2787212 2787212 0 0.0
RAM 115032 115032 0 0.0
all-clusters-app debug unknown 5656 5656 0 0.0
FLASH 6340936 6340936 0 0.0
RAM 533496 533496 0 0.0
all-clusters-minimal-app debug unknown 5528 5528 0 0.0
FLASH 5445196 5445196 0 0.0
RAM 225000 225000 0 0.0
bridge-app debug unknown 5560 5560 0 0.0
FLASH 4761600 4761600 0 0.0
RAM 204640 204640 0 0.0
camera-app debug unknown 8856 8856 0 0.0
FLASH 6896523 6896523 0 0.0
RAM 226800 226800 0 0.0
camera-controller debug unknown 9240 9240 0 0.0
FLASH 14317067 14317067 0 0.0
RAM 658800 658800 0 0.0
chip-tool debug unknown 6256 6256 0 0.0
FLASH 14604557 14605591 1034 0.0
RAM 645552 645552 0 0.0
chip-tool-ipv6only arm64 unknown 40328 40328 0 0.0
FLASH 12582272 12583216 944 0.0
RAM 691856 691856 0 0.0
fabric-admin debug unknown 5936 5936 0 0.0
FLASH 12676137 12676137 0 0.0
RAM 644912 644912 0 0.0
fabric-bridge-app debug unknown 4808 4808 0 0.0
FLASH 4578638 4578638 0 0.0
RAM 190704 190704 0 0.0
fabric-sync debug unknown 5064 5064 0 0.0
FLASH 5718885 5718885 0 0.0
RAM 486944 486944 0 0.0
lighting-app debug+rpc+ui unknown 6264 6264 0 0.0
FLASH 5648593 5648593 0 0.0
RAM 207704 207704 0 0.0
lock-app debug unknown 5496 5496 0 0.0
FLASH 4821428 4821428 0 0.0
RAM 194904 194904 0 0.0
ota-provider-app debug unknown 4848 4848 0 0.0
FLASH 4441386 4441386 0 0.0
RAM 184120 184120 0 0.0
ota-requestor-app debug unknown 4800 4800 0 0.0
FLASH 4569152 4569152 0 0.0
RAM 187992 187992 0 0.0
shell debug unknown 4272 4272 0 0.0
FLASH 3078572 3078572 0 0.0
RAM 148072 148072 0 0.0
thermostat-no-ble arm64 unknown 9608 9608 0 0.0
FLASH 4232136 4232136 0 0.0
RAM 231352 231352 0 0.0
tv-app debug unknown 5832 5832 0 0.0
FLASH 6076117 6076117 0 0.0
RAM 611568 611568 0 0.0
tv-casting-app debug unknown 5416 5416 0 0.0
FLASH 12796765 12797805 1040 0.0
RAM 766104 766104 0 0.0
nrfconnect all-clusters-app nrf52840dk_nrf52840 FLASH 919196 919196 0 0.0
RAM 167328 167328 0 0.0
nrf7002dk_nrf5340_cpuapp FLASH 911184 911184 0 0.0
RAM 145572 145572 0 0.0
all-clusters-minimal-app nrf52840dk_nrf52840 FLASH 856420 856420 0 0.0
RAM 141091 141091 0 0.0
nxp contact k32w0+release FLASH 591872 591872 0 0.0
RAM 72848 72848 0 0.0
mcxw71+release FLASH 624640 624640 0 0.0
RAM 63188 63188 0 0.0
light k32w0+release FLASH 617804 617804 0 0.0
RAM 72144 72144 0 0.0
k32w1+release FLASH 709120 709120 0 0.0
RAM 72036 72036 0 0.0
lock mcxw71+release FLASH 774168 774168 0 0.0
RAM 67612 67612 0 0.0
psoc6 all-clusters cy8ckit_062s2_43012 FLASH 1665252 1665252 0 0.0
RAM 212328 212328 0 0.0
all-clusters-minimal cy8ckit_062s2_43012 FLASH 1569756 1569756 0 0.0
RAM 208504 208504 0 0.0
light cy8ckit_062s2_43012 FLASH 1447012 1447012 0 0.0
RAM 197320 197320 0 0.0
lock cy8ckit_062s2_43012 FLASH 1476868 1476868 0 0.0
RAM 225016 225016 0 0.0
qpg lighting-app qpg6105+debug FLASH 667212 667212 0 0.0
RAM 105200 105200 0 0.0
lock-app qpg6105+debug FLASH 625624 625624 0 0.0
RAM 99820 99820 0 0.0
stm32 light STM32WB5MM-DK FLASH 466052 466052 0 0.0
RAM 141504 141504 0 0.0
telink bridge-app tl7218x FLASH 693508 693508 0 0.0
RAM 101832 101832 0 0.0
light-app-ota-compress-lzma-factory-data tl3218x FLASH 774140 774140 0 0.0
RAM 50072 50072 0 0.0
light-app-ota-shell-factory-data tl7218x FLASH 781246 781246 0 0.0
RAM 109252 109252 0 0.0
light-switch-app-ota-compress-lzma-factory-data tl7218x_retention FLASH 702628 702628 0 0.0
RAM 62572 62572 0 0.0
light-switch-app-ota-compress-lzma-shell-factory-data tlsr9528a FLASH 740582 740582 0 0.0
RAM 85752 85752 0 0.0
lighting-app-ota-factory-data tlsr9118bdk40d FLASH 607568 607568 0 0.0
RAM 119468 119468 0 0.0
lighting-app-ota-rpc-factory-data-4mb tlsr9518adk80d FLASH 816556 816560 4 0.0
RAM 107520 107520 0 0.0
tizen all-clusters-app arm unknown 5212 5212 0 0.0
FLASH 1812288 1812288 0 0.0
RAM 94832 94832 0 0.0
chip-tool-ubsan arm unknown 20600 20600 0 0.0
FLASH 20843598 20844606 1008 0.0
RAM 9067720 9068024 304 0.0

@kliffwong kliffwong marked this pull request as draft May 13, 2025 08:12
@kliffwong kliffwong changed the title [MATTER] Fix AddArgument for ByteSpan when content is hexstring [CHIPTOOL] Fix AddArgument for ByteSpan when content is hexstring May 13, 2025
@kliffwong kliffwong force-pushed the mr/fix-chiptool-bytespan branch from 1afec32 to a3c5850 Compare May 20, 2025 13:20
Copy link

github-actions bot commented May 20, 2025

PR #38838: Size comparison from df611f5 to a3c5850

Full report (70 builds for bl602, bl702, bl702l, cc13x4_26x4, cc32xx, cyw30739, efr32, esp32, linux, nrfconnect, psoc6, qpg, stm32, telink, tizen)
platform target config section df611f5 a3c5850 change % change
bl602 lighting-app bl602+mfd+littlefs+rpc FLASH 1103246 1103246 0 0.0
RAM 179082 179082 0 0.0
bl702 lighting-app bl702+eth FLASH 656476 656476 0 0.0
RAM 135041 135041 0 0.0
bl702+wifi FLASH 833986 833986 0 0.0
RAM 124597 124597 0 0.0
bl706+mfd+rpc+littlefs FLASH 1066526 1066526 0 0.0
RAM 117429 117429 0 0.0
bl702l contact-sensor-app bl702l+mfd+littlefs FLASH 895462 895462 0 0.0
RAM 105732 105732 0 0.0
lighting-app bl702l+mfd+littlefs FLASH 979550 979550 0 0.0
RAM 109932 109932 0 0.0
cc13x4_26x4 lighting-app LP_EM_CC1354P10_6 FLASH 821700 821700 0 0.0
RAM 120296 120296 0 0.0
lock-ftd LP_EM_CC1354P10_6 FLASH 831560 831560 0 0.0
RAM 125448 125448 0 0.0
pump-app LP_EM_CC1354P10_6 FLASH 779120 779120 0 0.0
RAM 113844 113844 0 0.0
pump-controller-app LP_EM_CC1354P10_6 FLASH 763332 763332 0 0.0
RAM 114060 114060 0 0.0
cc32xx air-purifier CC3235SF_LAUNCHXL FLASH 549574 549574 0 0.0
RAM 205264 205264 0 0.0
lock CC3235SF_LAUNCHXL FLASH 580982 580982 0 0.0
RAM 205456 205456 0 0.0
cyw30739 light CYW30739B2-P5-EVK-01 unknown 2040 2040 0 0.0
FLASH 662829 662829 0 0.0
RAM 77308 77308 0 0.0
CYW30739B2-P5-EVK-02 unknown 2040 2040 0 0.0
FLASH 682681 682681 0 0.0
RAM 79948 79948 0 0.0
CYW30739B2-P5-EVK-03 unknown 2040 2040 0 0.0
FLASH 682681 682681 0 0.0
RAM 79948 79948 0 0.0
CYW930739M2EVB-02 unknown 2040 2040 0 0.0
FLASH 639613 639613 0 0.0
RAM 72376 72376 0 0.0
light-switch CYW30739B2-P5-EVK-01 unknown 2040 2040 0 0.0
FLASH 623981 623981 0 0.0
RAM 73604 73604 0 0.0
CYW30739B2-P5-EVK-02 unknown 2040 2040 0 0.0
FLASH 643609 643609 0 0.0
RAM 76156 76156 0 0.0
CYW30739B2-P5-EVK-03 unknown 2040 2040 0 0.0
FLASH 643609 643609 0 0.0
RAM 76156 76156 0 0.0
lock CYW30739B2-P5-EVK-01 unknown 2040 2040 0 0.0
FLASH 643325 643325 0 0.0
RAM 76604 76604 0 0.0
CYW30739B2-P5-EVK-02 unknown 2040 2040 0 0.0
FLASH 663041 663041 0 0.0
RAM 79156 79156 0 0.0
CYW30739B2-P5-EVK-03 unknown 2040 2040 0 0.0
FLASH 663041 663041 0 0.0
RAM 79156 79156 0 0.0
thermostat CYW30739B2-P5-EVK-01 unknown 2040 2040 0 0.0
FLASH 619505 619505 0 0.0
RAM 70708 70708 0 0.0
CYW30739B2-P5-EVK-02 unknown 2040 2040 0 0.0
FLASH 639357 639357 0 0.0
RAM 73340 73340 0 0.0
CYW30739B2-P5-EVK-03 unknown 2040 2040 0 0.0
FLASH 639357 639357 0 0.0
RAM 73340 73340 0 0.0
efr32 lock-app BRD4187C FLASH 946084 946084 0 0.0
RAM 132096 132096 0 0.0
BRD4338a FLASH 772912 772912 0 0.0
RAM 173320 173320 0 0.0
window-app BRD4187C FLASH 1038736 1038728 -8 -0.0
RAM 128232 128232 0 0.0
esp32 all-clusters-app c3devkit DRAM 103408 103408 0 0.0
FLASH 1809664 1809664 0 0.0
IRAM 83846 83846 0 0.0
m5stack DRAM 122028 122028 0 0.0
FLASH 1775586 1775586 0 0.0
IRAM 117043 117043 0 0.0
linux air-purifier-app debug unknown 4848 4848 0 0.0
FLASH 2793796 2793796 0 0.0
RAM 115288 115288 0 0.0
all-clusters-app debug unknown 5664 5664 0 0.0
FLASH 6369678 6369678 0 0.0
RAM 534008 534008 0 0.0
all-clusters-minimal-app debug unknown 5528 5528 0 0.0
FLASH 5462406 5462406 0 0.0
RAM 225624 225624 0 0.0
bridge-app debug unknown 5560 5560 0 0.0
FLASH 4770570 4770570 0 0.0
RAM 205008 205008 0 0.0
camera-app debug unknown 8864 8864 0 0.0
FLASH 6906651 6906651 0 0.0
RAM 226712 226712 0 0.0
camera-controller debug unknown 9240 9240 0 0.0
FLASH 14406971 14406971 0 0.0
RAM 662096 662096 0 0.0
chip-tool debug unknown 6256 6256 0 0.0
FLASH 14693091 14694125 1034 0.0
RAM 648832 648832 0 0.0
chip-tool-ipv6only arm64 unknown 40352 40352 0 0.0
FLASH 12641392 12642336 944 0.0
RAM 695144 695144 0 0.0
fabric-admin debug unknown 5936 5936 0 0.0
FLASH 12766107 12766107 0 0.0
RAM 648192 648192 0 0.0
fabric-bridge-app debug unknown 4808 4808 0 0.0
FLASH 4587172 4587172 0 0.0
RAM 191088 191088 0 0.0
fabric-sync debug unknown 5064 5064 0 0.0
FLASH 5733381 5733381 0 0.0
RAM 487328 487328 0 0.0
lighting-app debug+rpc+ui unknown 6264 6264 0 0.0
FLASH 5650881 5650881 0 0.0
RAM 207576 207576 0 0.0
lock-app debug unknown 5496 5496 0 0.0
FLASH 4824260 4824260 0 0.0
RAM 194872 194872 0 0.0
ota-provider-app debug unknown 4848 4848 0 0.0
FLASH 4446070 4446070 0 0.0
RAM 184176 184176 0 0.0
ota-requestor-app debug unknown 4800 4800 0 0.0
FLASH 4575674 4575674 0 0.0
RAM 188080 188080 0 0.0
shell debug unknown 4272 4272 0 0.0
FLASH 3095164 3095164 0 0.0
RAM 148648 148648 0 0.0
thermostat-no-ble arm64 unknown 9624 9624 0 0.0
FLASH 4234000 4234000 0 0.0
RAM 231264 231264 0 0.0
tv-app debug unknown 5832 5832 0 0.0
FLASH 6092165 6092165 0 0.0
RAM 611800 611800 0 0.0
tv-casting-app debug unknown 5416 5416 0 0.0
FLASH 12892733 12893757 1024 0.0
RAM 769728 769728 0 0.0
nrfconnect all-clusters-app nrf52840dk_nrf52840 FLASH 921508 921508 0 0.0
RAM 167398 167398 0 0.0
nrf7002dk_nrf5340_cpuapp FLASH 913256 913256 0 0.0
RAM 145642 145642 0 0.0
all-clusters-minimal-app nrf52840dk_nrf52840 FLASH 858616 858616 0 0.0
RAM 141161 141161 0 0.0
psoc6 all-clusters cy8ckit_062s2_43012 FLASH 1669172 1669172 0 0.0
RAM 212408 212408 0 0.0
all-clusters-minimal cy8ckit_062s2_43012 FLASH 1573284 1573284 0 0.0
RAM 208592 208592 0 0.0
light cy8ckit_062s2_43012 FLASH 1447468 1447468 0 0.0
RAM 197296 197296 0 0.0
lock cy8ckit_062s2_43012 FLASH 1477364 1477364 0 0.0
RAM 225016 225016 0 0.0
qpg lighting-app qpg6105+debug FLASH 668252 668252 0 0.0
RAM 105244 105244 0 0.0
lock-app qpg6105+debug FLASH 626448 626448 0 0.0
RAM 99872 99872 0 0.0
stm32 light STM32WB5MM-DK FLASH 465940 465940 0 0.0
RAM 141496 141496 0 0.0
telink bridge-app tl7218x FLASH 694572 677816 -16756 -2.4
RAM 101908 90768 -11140 -10.9
light-app-ota-compress-lzma-factory-data tl3218x FLASH 774282 774282 0 0.0
RAM 50060 50060 0 0.0
light-app-ota-compress-lzma-shell-factory-data tl3218x FLASH 771376 771376 0 0.0
RAM 40352 40352 0 0.0
light-app-ota-shell-factory-data tl7218x FLASH 781388 759832 -21556 -2.8
RAM 109232 97480 -11752 -10.8
light-switch-app-ota-compress-lzma-factory-data tl7218x_retention FLASH 703534 687632 -15902 -2.3
RAM 62624 51592 -11032 -17.6
light-switch-app-ota-compress-lzma-shell-factory-data tlsr9528a FLASH 741488 716084 -25404 -3.4
RAM 85796 73404 -12392 -14.4
light-switch-app-ota-shell-factory-data tl3218x_retention FLASH 713424 713424 0 0.0
RAM 37040 37040 0 0.0
lighting-app-ota-factory-data tlsr9118bdk40d FLASH 608234 608168 -66 -0.0
RAM 120004 106728 -13276 -11.1
lighting-app-ota-rpc-factory-data-4mb tlsr9518adk80d FLASH 816698 794886 -21812 -2.7
RAM 107500 96328 -11172 -10.4
tizen all-clusters-app arm unknown 5224 5224 0 0.0
FLASH 1822424 1822424 0 0.0
RAM 95164 95164 0 0.0
chip-tool-ubsan arm unknown 20612 20612 0 0.0
FLASH 20922062 20923062 1000 0.0
RAM 9096248 9096552 304 0.0

@kliffwong kliffwong force-pushed the mr/fix-chiptool-bytespan branch 2 times, most recently from 8238c8b to 07e6698 Compare May 20, 2025 14:58
Copy link

github-actions bot commented May 20, 2025

PR #38838: Size comparison from 6667bf2 to 07e6698

Full report (27 builds for bl602, bl702, bl702l, cc13x4_26x4, cc32xx, nrfconnect, qpg, stm32, telink, tizen)
platform target config section 6667bf2 07e6698 change % change
bl602 lighting-app bl602+mfd+littlefs+rpc FLASH 1103246 1103246 0 0.0
RAM 179082 179082 0 0.0
bl702 lighting-app bl702+eth FLASH 656476 656476 0 0.0
RAM 135041 135041 0 0.0
bl702+wifi FLASH 833986 833986 0 0.0
RAM 124597 124597 0 0.0
bl706+mfd+rpc+littlefs FLASH 1066526 1066526 0 0.0
RAM 117429 117429 0 0.0
bl702l contact-sensor-app bl702l+mfd+littlefs FLASH 895462 895462 0 0.0
RAM 105732 105732 0 0.0
lighting-app bl702l+mfd+littlefs FLASH 979550 979550 0 0.0
RAM 109932 109932 0 0.0
cc13x4_26x4 lighting-app LP_EM_CC1354P10_6 FLASH 821700 821700 0 0.0
RAM 120296 120296 0 0.0
lock-ftd LP_EM_CC1354P10_6 FLASH 831560 831560 0 0.0
RAM 125448 125448 0 0.0
pump-app LP_EM_CC1354P10_6 FLASH 779120 779120 0 0.0
RAM 113844 113844 0 0.0
pump-controller-app LP_EM_CC1354P10_6 FLASH 763332 763332 0 0.0
RAM 114060 114060 0 0.0
cc32xx air-purifier CC3235SF_LAUNCHXL FLASH 549574 549574 0 0.0
RAM 205264 205264 0 0.0
lock CC3235SF_LAUNCHXL FLASH 580982 580982 0 0.0
RAM 205456 205456 0 0.0
nrfconnect all-clusters-app nrf52840dk_nrf52840 FLASH 921508 921508 0 0.0
RAM 167398 167398 0 0.0
nrf7002dk_nrf5340_cpuapp FLASH 913256 913256 0 0.0
RAM 145642 145642 0 0.0
all-clusters-minimal-app nrf52840dk_nrf52840 FLASH 858616 858616 0 0.0
RAM 141161 141161 0 0.0
qpg lighting-app qpg6105+debug FLASH 668252 668252 0 0.0
RAM 105244 105244 0 0.0
lock-app qpg6105+debug FLASH 626448 626448 0 0.0
RAM 99872 99872 0 0.0
stm32 light STM32WB5MM-DK FLASH 465940 465940 0 0.0
RAM 141496 141496 0 0.0
telink bridge-app tl7218x FLASH 694572 694572 0 0.0
RAM 101908 101908 0 0.0
light-app-ota-compress-lzma-factory-data tl3218x FLASH 774282 774282 0 0.0
RAM 50060 50060 0 0.0
light-app-ota-shell-factory-data tl7218x FLASH 781388 781388 0 0.0
RAM 109232 109232 0 0.0
light-switch-app-ota-compress-lzma-factory-data tl7218x_retention FLASH 703534 703534 0 0.0
RAM 62624 62624 0 0.0
light-switch-app-ota-compress-lzma-shell-factory-data tlsr9528a FLASH 741488 741488 0 0.0
RAM 85796 85796 0 0.0
lighting-app-ota-factory-data tlsr9118bdk40d FLASH 608234 608234 0 0.0
RAM 120004 120004 0 0.0
lighting-app-ota-rpc-factory-data-4mb tlsr9518adk80d FLASH 816698 816702 4 0.0
RAM 107500 107500 0 0.0
tizen all-clusters-app arm unknown 5224 5224 0 0.0
FLASH 1822424 1822424 0 0.0
RAM 95164 95164 0 0.0
chip-tool-ubsan arm unknown 20612 20612 0 0.0
FLASH 20922062 20923142 1080 0.0
RAM 9096248 9096608 360 0.0

@kliffwong kliffwong force-pushed the mr/fix-chiptool-bytespan branch from 07e6698 to dfdd368 Compare May 20, 2025 15:40
Copy link
Contributor

@bzbarsky-apple bzbarsky-apple left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looking at this PR description, this bit:

./chip-tool thermostat set-active-preset-request hex:<Handle> <nodeid> <endpoint>

seems to work fine for me: if I pass hex:aabb12 as the first arg, those are the bytes that the server gets. So I am not sure what this is trying to fix exactly or what sorts of "manual testing" were were done.

@@ -710,6 +710,37 @@ size_t Command::AddArgument(const char * name, chip::CharSpan * value, const cha
size_t Command::AddArgument(const char * name, chip::ByteSpan * value, const char * desc, uint8_t flags)
{
Argument arg;

// if the value is a hex string, we need to convert it from hex to bytes
if ((value->size() > kHexStringPrefixLen) && IsHexString((const char *) value->data()))
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This makes no sense. The way this works is that AddArgument registers a memory location where the value will live later when we have a value. At the point where this is called, value->size() is 0 at best (if it's a non-optional argument), and garbage at worst, because value might in fact be a reinterpret_cast pointer to an Optional<ByteSpan> here (if the kOptional flag is set).

The hex string detection should (and does) happen during the actual argument decoding, which is what will fill in the ByteSpan here. In particular, this will happen in Command::InitArgument.

@kliffwong kliffwong closed this May 21, 2025
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.

5 participants