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

Support raw ByteSpan values correctly in SafeAttributePersistenceProvider #34306

Merged
merged 3 commits into from
Jul 14, 2024

Conversation

ksperling-apple
Copy link
Contributor

@ksperling-apple ksperling-apple commented Jul 12, 2024

The DefaultAttributePersistenceProvider implementation of SafeReadValue() had the undocumented behavior of enforcing that the value exactly filled the provided buffer. This does not make sense for an API that purports to store general ByteSpan values. (Note that SafeReadValue() was previously protected in SafeAttributePersistenceProvider, but public in the DefaultAttributePersistenceProvider implementation.)

Instead move this validation into ReadScalarValue() in SafeAttributePersistenceProvider, and separate InternalReadValue() into one method that does the only the actual read, and a second one that performs the additional validation for reading typed ember attributes (strings with length prefixes etc). Use the former one from SafeReadValue().

Also fix possible out of bounds access when reading ember strings by ensuring we have read the length byte(s) before attempting to interpret them.

…ider

The DefaultAttributePersistenceProvider implementation of SafeReadValue() had
the undocumented behavior of enforcing that the value exactly filled the
provided buffer. This does not make sense for an API that purports to store
general ByteSpan values.

Instead move this validation into ReadScalarValue() in
SafeAttributePersistenceProvider, and separate InternalReadValue() into one
method that does the only the actual read, and a second one that performs the
additional validation for reading typed ember attributes (strings with length
prefixes etc). Use the former one from SafeReadValue().

Also fix possible out of bounds access when reading ember strings by ensuring
we have read the length byte(s) before attempting to interpret them.
@ksperling-apple ksperling-apple changed the title Support raw ByteSpan values correctly in SafeattributePersistenceProvider Support raw ByteSpan values correctly in SafeAttributePersistenceProvider Jul 12, 2024
Copy link

github-actions bot commented Jul 12, 2024

PR #34306: Size comparison from d856745 to 3f74144

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 d856745 3f74144 change % change
bl602 lighting-app bl602 FLASH 1271402 1271432 30 0.0
RAM 95328 95328 0 0.0
bl602+mfd FLASH 1285916 1285946 30 0.0
RAM 95472 95472 0 0.0
bl602+rpc FLASH 1310618 1310648 30 0.0
RAM 103752 103752 0 0.0
bl702 lighting-app bl702 FLASH 1092492 1092522 30 0.0
RAM 15161 15161 0 0.0
bl702+mfd FLASH 1103186 1103216 30 0.0
RAM 15313 15313 0 0.0
bl702+rpc FLASH 1182302 1182332 30 0.0
RAM 24181 24181 0 0.0
bl706-eth FLASH 875642 875672 30 0.0
RAM 27272 27272 0 0.0
bl706-wifi FLASH 1128062 1128098 36 0.0
RAM 14605 14605 0 0.0
bl702l lighting-app bl702l FLASH 1079378 1079408 30 0.0
RAM 21732 21732 0 0.0
bl702l+mfd FLASH 1090640 1090670 30 0.0
RAM 21892 21892 0 0.0
cc13x4_26x4 lighting-app LP_EM_CC1354P10_6 FLASH 798480 798504 24 0.0
RAM 109180 109180 0 0.0
lock-ftd LP_EM_CC1354P10_6 FLASH 816004 816028 24 0.0
RAM 116948 116948 0 0.0
lock-mtd LP_EM_CC1354P10_6 FLASH 807536 807560 24 0.0
RAM 111236 111236 0 0.0
pump-app LP_EM_CC1354P10_6 FLASH 760816 760840 24 0.0
RAM 105328 105328 0 0.0
pump-controller-app LP_EM_CC1354P10_6 FLASH 746528 746552 24 0.0
RAM 105576 105576 0 0.0
cc32xx air-purifier CC3235SF_LAUNCHXL FLASH 606406 606422 16 0.0
RAM 204508 204508 0 0.0
lock CC3235SF_LAUNCHXL FLASH 651002 651010 8 0.0
RAM 204780 204780 0 0.0
cyw30739 light CYW30739B2-P5-EVK-01 unknown 2040 2040 0 0.0
FLASH 667617 667641 24 0.0
RAM 77644 77644 0 0.0
CYW30739B2-P5-EVK-02 unknown 2040 2040 0 0.0
FLASH 687461 687485 24 0.0
RAM 80276 80276 0 0.0
CYW30739B2-P5-EVK-03 unknown 2040 2040 0 0.0
FLASH 687461 687485 24 0.0
RAM 80276 80276 0 0.0
CYW930739M2EVB-02 unknown 2040 2040 0 0.0
FLASH 644397 644421 24 0.0
RAM 72712 72712 0 0.0
light-switch CYW30739B2-P5-EVK-01 unknown 2040 2040 0 0.0
FLASH 609257 609281 24 0.0
RAM 70804 70804 0 0.0
CYW30739B2-P5-EVK-02 unknown 2040 2040 0 0.0
FLASH 628893 628917 24 0.0
RAM 73356 73356 0 0.0
CYW30739B2-P5-EVK-03 unknown 2040 2040 0 0.0
FLASH 628893 628917 24 0.0
RAM 73356 73356 0 0.0
lock CYW30739B2-P5-EVK-01 unknown 2040 2040 0 0.0
FLASH 624313 624337 24 0.0
RAM 73820 73820 0 0.0
CYW30739B2-P5-EVK-02 unknown 2040 2040 0 0.0
FLASH 644029 644053 24 0.0
RAM 76372 76372 0 0.0
CYW30739B2-P5-EVK-03 unknown 2040 2040 0 0.0
FLASH 644029 644053 24 0.0
RAM 76372 76372 0 0.0
thermostat CYW30739B2-P5-EVK-01 unknown 2040 2040 0 0.0
FLASH 593341 593365 24 0.0
RAM 67788 67788 0 0.0
CYW30739B2-P5-EVK-02 unknown 2040 2040 0 0.0
FLASH 613201 613225 24 0.0
RAM 70420 70420 0 0.0
CYW30739B2-P5-EVK-03 unknown 2040 2040 0 0.0
FLASH 613201 613225 24 0.0
RAM 70420 70420 0 0.0
efr32 lighting-app BRD4187C FLASH 924556 924580 24 0.0
RAM 137528 137528 0 0.0
lock-app BRD4338a FLASH 733148 733156 8 0.0
RAM 207892 207892 0 0.0
window-app BRD4187C FLASH 1012628 1012620 -8 -0.0
RAM 129632 129632 0 0.0
esp32 all-clusters-app c3devkit DRAM 90924 90924 0 0.0
FLASH 1469428 1469484 56 0.0
IRAM 75570 75570 0 0.0
m5stack DRAM 117412 117412 0 0.0
FLASH 1538395 1538471 76 0.0
IRAM 125403 125403 0 0.0
linux air-purifier-app debug unknown 4592 4592 0 0.0
FLASH 2530624 2530800 176 0.0
RAM 125112 125112 0 0.0
all-clusters-app debug unknown 5368 5368 0 0.0
FLASH 5591774 5591870 96 0.0
RAM 493240 493240 0 0.0
all-clusters-minimal-app debug unknown 5288 5288 0 0.0
FLASH 5062480 5062672 192 0.0
RAM 235464 235464 0 0.0
bridge-app debug unknown 5256 5256 0 0.0
FLASH 4478992 4479184 192 0.0
RAM 212832 212832 0 0.0
chip-tool debug unknown 5728 5728 0 0.0
FLASH 11798103 11798103 0 0.0
RAM 547618 547618 0 0.0
chip-tool-ipv6only arm64 unknown 20128 20128 0 0.0
FLASH 10907452 10907452 0 0.0
RAM 596616 596616 0 0.0
fabric-admin debug unknown 5616 5616 0 0.0
FLASH 10876999 10876999 0 0.0
RAM 544490 544490 0 0.0
fabric-bridge-app debug unknown 4528 4528 0 0.0
FLASH 4244512 4244720 208 0.0
RAM 198832 198832 0 0.0
lighting-app debug+rpc+ui unknown 5936 5936 0 0.0
FLASH 5383346 5383538 192 0.0
RAM 224136 224136 0 0.0
lock-app debug unknown 5192 5192 0 0.0
FLASH 4542384 4542576 192 0.0
RAM 200216 200216 0 0.0
ota-provider-app debug unknown 4576 4576 0 0.0
FLASH 4198400 4198592 192 0.0
RAM 194544 194544 0 0.0
ota-requestor-app debug unknown 4512 4512 0 0.0
FLASH 4323760 4323952 192 0.0
RAM 199168 199168 0 0.0
shell debug unknown 4112 4112 0 0.0
FLASH 2805421 2805613 192 0.0
RAM 153008 153008 0 0.0
thermostat-no-ble arm64 unknown 9184 9184 0 0.0
FLASH 4168828 4169004 176 0.0
RAM 235840 235840 0 0.0
tv-app debug unknown 5472 5472 0 0.0
FLASH 5626928 5627120 192 0.0
RAM 342120 342120 0 0.0
tv-casting-app debug unknown 5096 5096 0 0.0
FLASH 9968094 9968286 192 0.0
RAM 402936 402936 0 0.0
mbed lock-app-release cy8cproto_062_4343w FLASH 1502172 1502236 64 0.0
RAM 226648 226648 0 0.0
nrfconnect all-clusters-app nrf52840dk_nrf52840 FLASH 882560 882604 44 0.0
RAM 142229 142229 0 0.0
nrf7002dk_nrf5340_cpuapp FLASH 953060 953120 60 0.0
RAM 140657 140657 0 0.0
all-clusters-minimal-app nrf52840dk_nrf52840 FLASH 828076 828104 28 0.0
RAM 141123 141123 0 0.0
nxp contact k32w0+release FLASH 576116 576132 16 0.0
RAM 70024 70024 0 0.0
k32w1+release FLASH 591472 591496 24 0.0
RAM 74056 74056 0 0.0
light k32w0+release FLASH 610344 610360 16 0.0
RAM 69500 69500 0 0.0
k32w1+release FLASH 675080 675104 24 0.0
RAM 82816 82816 0 0.0
psoc6 all-clusters cy8ckit_062s2_43012 FLASH 1615580 1615628 48 0.0
RAM 209692 209692 0 0.0
all-clusters-minimal cy8ckit_062s2_43012 FLASH 1536436 1536436 0 0.0
RAM 206588 206588 0 0.0
light cy8ckit_062s2_43012 FLASH 1463028 1463044 16 0.0
RAM 199876 199876 0 0.0
lock cy8ckit_062s2_43012 FLASH 1463116 1463132 16 0.0
RAM 224388 224388 0 0.0
qpg lighting-app qpg6105+debug FLASH 651348 651372 24 0.0
RAM 104564 104564 0 0.0
lock-app qpg6105+debug FLASH 611256 611280 24 0.0
RAM 99240 99240 0 0.0
stm32 light STM32WB5MM-DK FLASH 473688 473712 24 0.0
RAM 144196 144196 0 0.0
telink air-quality-sensor-app tlsr9528a_retention FLASH 632886 632926 40 0.0
RAM 50528 50528 0 0.0
all-clusters-app tlsr9118bdk40d FLASH 658748 658820 72 0.0
RAM 148408 148408 0 0.0
all-clusters-minimal-app tlsr9528a FLASH 779050 779090 40 0.0
RAM 113212 113212 0 0.0
bridge-app tlsr9258a FLASH 675882 675922 40 0.0
RAM 95304 95304 0 0.0
contact-sensor-app tlsr9528a_retention FLASH 634470 634510 40 0.0
RAM 50572 50572 0 0.0
light-switch-app-ota-shell-factory-data tlsr9528a FLASH 720354 720394 40 0.0
RAM 77148 77148 0 0.0
lighting-app-ota-factory-data tlsr9118bdk40d FLASH 613884 613924 40 0.0
RAM 144636 144636 0 0.0
lighting-app-ota-rpc-factory-data-4mb tlsr9518adk80d FLASH 801636 801676 40 0.0
RAM 103040 103040 0 0.0
lock-app-dfu tlsr9528a FLASH 665968 666008 40 0.0
RAM 69852 69852 0 0.0
ota-requestor-app tlsr9258a FLASH 695212 695252 40 0.0
RAM 95028 95028 0 0.0
pump-app tlsr9518adk80d FLASH 616744 616784 40 0.0
RAM 56952 56952 0 0.0
pump-controller-app tlsr9518adk80d FLASH 607128 607168 40 0.0
RAM 56752 56752 0 0.0
shell tlsr9518adk80d FLASH 466380 466380 0 0.0
RAM 72484 72484 0 0.0
smoke_co_alarm-app tlsr9528a_retention FLASH 641088 641128 40 0.0
RAM 52200 52200 0 0.0
temperature-measurement-app-mars-ota tlsr9518adk80d FLASH 650954 650994 40 0.0
RAM 60388 60388 0 0.0
thermostat tlsr9518adk80d FLASH 626018 626058 40 0.0
RAM 57084 57084 0 0.0
window-covering tlsr9118bdk40d FLASH 519278 519318 40 0.0
RAM 97800 97800 0 0.0
tizen all-clusters-app arm unknown 1584 1584 0 0.0
FLASH 1639156 1639276 120 0.0
RAM 48548 48548 0 0.0
chip-tool-ubsan arm unknown 2384 2384 0 0.0
FLASH 16293430 16293430 0 0.0
RAM 7156248 7156248 0 0.0

@github-actions github-actions bot added the tests label Jul 12, 2024
Copy link

github-actions bot commented Jul 12, 2024

PR #34306: Size comparison from d856745 to 7602515

Increases above 0.2%:

platform target config section d856745 7602515 change % change
linux fabric-bridge-app debug unknown 4528 4544 16 0.4
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 d856745 7602515 change % change
bl602 lighting-app bl602 FLASH 1271402 1271432 30 0.0
RAM 95328 95328 0 0.0
bl602+mfd FLASH 1285916 1285946 30 0.0
RAM 95472 95472 0 0.0
bl602+rpc FLASH 1310618 1310648 30 0.0
RAM 103752 103752 0 0.0
bl702 lighting-app bl702 FLASH 1092492 1092522 30 0.0
RAM 15161 15161 0 0.0
bl702+mfd FLASH 1103186 1103216 30 0.0
RAM 15313 15313 0 0.0
bl702+rpc FLASH 1182302 1182332 30 0.0
RAM 24181 24181 0 0.0
bl706-eth FLASH 875642 875672 30 0.0
RAM 27272 27272 0 0.0
bl706-wifi FLASH 1128062 1128098 36 0.0
RAM 14605 14605 0 0.0
bl702l lighting-app bl702l FLASH 1079378 1079408 30 0.0
RAM 21732 21732 0 0.0
bl702l+mfd FLASH 1090640 1090670 30 0.0
RAM 21892 21892 0 0.0
cc13x4_26x4 lighting-app LP_EM_CC1354P10_6 FLASH 798480 798504 24 0.0
RAM 109180 109180 0 0.0
lock-ftd LP_EM_CC1354P10_6 FLASH 816004 816028 24 0.0
RAM 116948 116948 0 0.0
lock-mtd LP_EM_CC1354P10_6 FLASH 807536 807560 24 0.0
RAM 111236 111236 0 0.0
pump-app LP_EM_CC1354P10_6 FLASH 760816 760840 24 0.0
RAM 105328 105328 0 0.0
pump-controller-app LP_EM_CC1354P10_6 FLASH 746528 746552 24 0.0
RAM 105576 105576 0 0.0
cc32xx air-purifier CC3235SF_LAUNCHXL FLASH 606406 606406 0 0.0
RAM 204508 204508 0 0.0
lock CC3235SF_LAUNCHXL FLASH 651002 651010 8 0.0
RAM 204780 204780 0 0.0
cyw30739 light CYW30739B2-P5-EVK-01 unknown 2040 2040 0 0.0
FLASH 667617 667625 8 0.0
RAM 77644 77644 0 0.0
CYW30739B2-P5-EVK-02 unknown 2040 2040 0 0.0
FLASH 687461 687469 8 0.0
RAM 80276 80276 0 0.0
CYW30739B2-P5-EVK-03 unknown 2040 2040 0 0.0
FLASH 687461 687469 8 0.0
RAM 80276 80276 0 0.0
CYW930739M2EVB-02 unknown 2040 2040 0 0.0
FLASH 644397 644405 8 0.0
RAM 72712 72712 0 0.0
light-switch CYW30739B2-P5-EVK-01 unknown 2040 2040 0 0.0
FLASH 609257 609265 8 0.0
RAM 70804 70804 0 0.0
CYW30739B2-P5-EVK-02 unknown 2040 2040 0 0.0
FLASH 628893 628901 8 0.0
RAM 73356 73356 0 0.0
CYW30739B2-P5-EVK-03 unknown 2040 2040 0 0.0
FLASH 628893 628901 8 0.0
RAM 73356 73356 0 0.0
lock CYW30739B2-P5-EVK-01 unknown 2040 2040 0 0.0
FLASH 624313 624321 8 0.0
RAM 73820 73820 0 0.0
CYW30739B2-P5-EVK-02 unknown 2040 2040 0 0.0
FLASH 644029 644037 8 0.0
RAM 76372 76372 0 0.0
CYW30739B2-P5-EVK-03 unknown 2040 2040 0 0.0
FLASH 644029 644037 8 0.0
RAM 76372 76372 0 0.0
thermostat CYW30739B2-P5-EVK-01 unknown 2040 2040 0 0.0
FLASH 593341 593349 8 0.0
RAM 67788 67788 0 0.0
CYW30739B2-P5-EVK-02 unknown 2040 2040 0 0.0
FLASH 613201 613209 8 0.0
RAM 70420 70420 0 0.0
CYW30739B2-P5-EVK-03 unknown 2040 2040 0 0.0
FLASH 613201 613209 8 0.0
RAM 70420 70420 0 0.0
efr32 lighting-app BRD4187C FLASH 924556 924580 24 0.0
RAM 137528 137528 0 0.0
lock-app BRD4338a FLASH 733148 733156 8 0.0
RAM 207892 207892 0 0.0
window-app BRD4187C FLASH 1012628 1012620 -8 -0.0
RAM 129632 129632 0 0.0
esp32 all-clusters-app c3devkit DRAM 90924 90924 0 0.0
FLASH 1469428 1469484 56 0.0
IRAM 75570 75570 0 0.0
m5stack DRAM 117412 117412 0 0.0
FLASH 1538395 1538415 20 0.0
IRAM 125403 125403 0 0.0
linux air-purifier-app debug unknown 4592 4592 0 0.0
FLASH 2530624 2531184 560 0.0
RAM 125112 125112 0 0.0
all-clusters-app debug unknown 5368 5368 0 0.0
FLASH 5591774 5592254 480 0.0
RAM 493240 493240 0 0.0
all-clusters-minimal-app debug unknown 5288 5288 0 0.0
FLASH 5062480 5063072 592 0.0
RAM 235464 235464 0 0.0
bridge-app debug unknown 5256 5256 0 0.0
FLASH 4478992 4479584 592 0.0
RAM 212832 212832 0 0.0
chip-tool debug unknown 5728 5728 0 0.0
FLASH 11798103 11797831 -272 -0.0
RAM 547618 547618 0 0.0
chip-tool-ipv6only arm64 unknown 20128 20128 0 0.0
FLASH 10907452 10908044 592 0.0
RAM 596616 596616 0 0.0
fabric-admin debug unknown 5616 5616 0 0.0
FLASH 10876999 10879159 2160 0.0
RAM 544490 544650 160 0.0
fabric-bridge-app debug unknown 4528 4544 16 0.4
FLASH 4244512 4248240 3728 0.1
RAM 198832 198992 160 0.1
lighting-app debug+rpc+ui unknown 5936 5936 0 0.0
FLASH 5383346 5383938 592 0.0
RAM 224136 224136 0 0.0
lock-app debug unknown 5192 5192 0 0.0
FLASH 4542384 4542976 592 0.0
RAM 200216 200216 0 0.0
ota-provider-app debug unknown 4576 4576 0 0.0
FLASH 4198400 4198992 592 0.0
RAM 194544 194544 0 0.0
ota-requestor-app debug unknown 4512 4512 0 0.0
FLASH 4323760 4324352 592 0.0
RAM 199168 199168 0 0.0
shell debug unknown 4112 4112 0 0.0
FLASH 2805421 2805709 288 0.0
RAM 153008 153008 0 0.0
thermostat-no-ble arm64 unknown 9184 9184 0 0.0
FLASH 4168828 4169596 768 0.0
RAM 235840 235840 0 0.0
tv-app debug unknown 5472 5472 0 0.0
FLASH 5626928 5627600 672 0.0
RAM 342120 342120 0 0.0
tv-casting-app debug unknown 5096 5096 0 0.0
FLASH 9968094 9967742 -352 -0.0
RAM 402936 402936 0 0.0
mbed lock-app-release cy8cproto_062_4343w FLASH 1502172 1502236 64 0.0
RAM 226648 226648 0 0.0
nrfconnect all-clusters-app nrf52840dk_nrf52840 FLASH 882560 882612 52 0.0
RAM 142229 142229 0 0.0
nrf7002dk_nrf5340_cpuapp FLASH 953060 953128 68 0.0
RAM 140657 140657 0 0.0
all-clusters-minimal-app nrf52840dk_nrf52840 FLASH 828076 828104 28 0.0
RAM 141123 141123 0 0.0
nxp contact k32w0+release FLASH 576116 576132 16 0.0
RAM 70024 70024 0 0.0
k32w1+release FLASH 591472 591496 24 0.0
RAM 74056 74056 0 0.0
light k32w0+release FLASH 610344 610360 16 0.0
RAM 69500 69500 0 0.0
k32w1+release FLASH 675080 675104 24 0.0
RAM 82816 82816 0 0.0
psoc6 all-clusters cy8ckit_062s2_43012 FLASH 1615580 1615564 -16 -0.0
RAM 209692 209692 0 0.0
all-clusters-minimal cy8ckit_062s2_43012 FLASH 1536436 1536436 0 0.0
RAM 206588 206588 0 0.0
light cy8ckit_062s2_43012 FLASH 1463028 1463044 16 0.0
RAM 199876 199876 0 0.0
lock cy8ckit_062s2_43012 FLASH 1463116 1463132 16 0.0
RAM 224388 224388 0 0.0
qpg lighting-app qpg6105+debug FLASH 651348 651372 24 0.0
RAM 104564 104564 0 0.0
lock-app qpg6105+debug FLASH 611256 611280 24 0.0
RAM 99240 99240 0 0.0
stm32 light STM32WB5MM-DK FLASH 473688 473712 24 0.0
RAM 144196 144196 0 0.0
telink air-quality-sensor-app tlsr9528a_retention FLASH 632886 632926 40 0.0
RAM 50528 50528 0 0.0
all-clusters-app tlsr9118bdk40d FLASH 658748 658818 70 0.0
RAM 148408 148408 0 0.0
all-clusters-minimal-app tlsr9528a FLASH 779050 779090 40 0.0
RAM 113212 113212 0 0.0
bridge-app tlsr9258a FLASH 675882 675922 40 0.0
RAM 95304 95304 0 0.0
contact-sensor-app tlsr9528a_retention FLASH 634470 634510 40 0.0
RAM 50572 50572 0 0.0
light-switch-app-ota-shell-factory-data tlsr9528a FLASH 720354 720370 16 0.0
RAM 77148 77148 0 0.0
lighting-app-ota-factory-data tlsr9118bdk40d FLASH 613884 613924 40 0.0
RAM 144636 144636 0 0.0
lighting-app-ota-rpc-factory-data-4mb tlsr9518adk80d FLASH 801636 801676 40 0.0
RAM 103040 103040 0 0.0
lock-app-dfu tlsr9528a FLASH 665968 666008 40 0.0
RAM 69852 69852 0 0.0
ota-requestor-app tlsr9258a FLASH 695212 695252 40 0.0
RAM 95028 95028 0 0.0
pump-app tlsr9518adk80d FLASH 616744 616784 40 0.0
RAM 56952 56952 0 0.0
pump-controller-app tlsr9518adk80d FLASH 607128 607168 40 0.0
RAM 56752 56752 0 0.0
shell tlsr9518adk80d FLASH 466380 466356 -24 -0.0
RAM 72484 72484 0 0.0
smoke_co_alarm-app tlsr9528a_retention FLASH 641088 641128 40 0.0
RAM 52200 52200 0 0.0
temperature-measurement-app-mars-ota tlsr9518adk80d FLASH 650954 650994 40 0.0
RAM 60388 60388 0 0.0
thermostat tlsr9518adk80d FLASH 626018 626058 40 0.0
RAM 57084 57084 0 0.0
window-covering tlsr9118bdk40d FLASH 519278 519318 40 0.0
RAM 97800 97800 0 0.0
tizen all-clusters-app arm unknown 1584 1584 0 0.0
FLASH 1639156 1639268 112 0.0
RAM 48548 48548 0 0.0
chip-tool-ubsan arm unknown 2384 2384 0 0.0
FLASH 16293430 16292958 -472 -0.0
RAM 7156248 7156248 0 0.0

@yufengwangca yufengwangca merged commit 05e4c10 into project-chip:master Jul 14, 2024
68 checks passed
@ksperling-apple ksperling-apple deleted the safeattr-bytespans branch July 14, 2024 19:39
j-ororke pushed a commit to j-ororke/connectedhomeip that referenced this pull request Jul 15, 2024
…ider (project-chip#34306)

* Support raw ByteSpan values correctly in SafeattributePersistenceProvider

The DefaultAttributePersistenceProvider implementation of SafeReadValue() had
the undocumented behavior of enforcing that the value exactly filled the
provided buffer. This does not make sense for an API that purports to store
general ByteSpan values.

Instead move this validation into ReadScalarValue() in
SafeAttributePersistenceProvider, and separate InternalReadValue() into one
method that does the only the actual read, and a second one that performs the
additional validation for reading typed ember attributes (strings with length
prefixes etc). Use the former one from SafeReadValue().

Also fix possible out of bounds access when reading ember strings by ensuring
we have read the length byte(s) before attempting to interpret them.

* Take integral argument T by value

* Add test
j-ororke pushed a commit to j-ororke/connectedhomeip that referenced this pull request Jul 18, 2024
…ider (project-chip#34306)

* Support raw ByteSpan values correctly in SafeattributePersistenceProvider

The DefaultAttributePersistenceProvider implementation of SafeReadValue() had
the undocumented behavior of enforcing that the value exactly filled the
provided buffer. This does not make sense for an API that purports to store
general ByteSpan values.

Instead move this validation into ReadScalarValue() in
SafeAttributePersistenceProvider, and separate InternalReadValue() into one
method that does the only the actual read, and a second one that performs the
additional validation for reading typed ember attributes (strings with length
prefixes etc). Use the former one from SafeReadValue().

Also fix possible out of bounds access when reading ember strings by ensuring
we have read the length byte(s) before attempting to interpret them.

* Take integral argument T by value

* Add test
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.

3 participants