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

[AccessControl] Ensure extension attribute data are valid TLV per spec #20511

Merged

Conversation

woody-apple
Copy link
Contributor

Problem

Per spec the AccessControlExtensionStruct.data field constraints are defined as:
The contents SHALL consist of a top-level anonymous list; each list element SHALL include a profile-specific tag encoded in fully qualified form.

But nothing enforces that.

Change overview

  • Enforce the extension data format.

Testing

It was tested using manually generated TLV matching the constraints from the AccessControl test plan.
Please let me know if I misread the spec, both for generating the octet string, and for validating them.

For reference:

_OK_EMPTY   	        (2): 1718
D_OK_SINGLE   	       (71): 17D00000F1FF01003D48656C6C6F20576F726C642E205468697320697320612073696E676C6520656C656D656E74206C6976696E6720617320612063686172737472696E670018
D_OK_FULL   	    (128): 17D00000F1FF01003D48656C6C6F20576F726C642E205468697320697320612073696E676C6520656C656D656E74206C6976696E6720617320612063686172737472696E6700D00000F1FF02003148656C6C6F20576F726C642E205468697320697320612073696E676C6520656C656D656E7420616761696E2E2E2E2E2E0018
D_BAD_LENGTH      (129): 17D00000F1FF01003D48656C6C6F20576F726C642E205468697320697320612073696E676C6520656C656D656E74206C6976696E6720617320612063686172737472696E6700D00000F1FF02003248656C6C6F20576F726C642E205468697320697320612073696E676C6520656C656D656E7420616761696E2E2E2E2E2E2E0018
D_BAD_STRUCT   	 (2): 1518
D_BAD_LIST   	       (72): 3701D00000F1FF01003D48656C6C6F20576F726C642E205468697320697320612073696E676C6520656C656D656E74206C6976696E6720617320612063686172737472696E670018
D_BAD_ELEM   	       (65): 17103D48656C6C6F20576F726C642E205468697320697320612073696E676C6520656C656D656E74206C6976696E6720617320612063686172737472696E670018
D_BAD_OVERFLOW   (72): 17D00000F1FF01003D48656C6C6F20576F726C642E205468697320697320612073696E676C6520656C656D656E74206C6976696E6720617320612063686172737472696E670018FF
D_BAD_UNDERFLOW(70): 17D00000F1FF01003D48656C6C6F20576F726C642E205468697320697320612073696E676C6520656C656D656E74206C6976696E6720617320612063686172737472696E6700
D_BAD_NONE   		 (0):

@boring-cyborg boring-cyborg bot added the app label Jul 8, 2022
@github-actions
Copy link

github-actions bot commented Jul 8, 2022

PR #20511: Size comparison from 7c1b23d to 1033f6a

Increases above 0.2%:

platform target config section 7c1b23d 1033f6a change % change
efr32 lighting-app BRD4161A+rpc (read/write) 151948 1135148 983200 647.1
Increases (39 builds for cc13x2_26x2, cyw30739, efr32, esp32, k32w, linux, mbed, nrfconnect, p6, telink)
platform target config section 7c1b23d 1033f6a change % change
cc13x2_26x2 all-clusters-app LP_CC2652R7 (read only) 665651 665795 144 0.0
.text 577268 577412 144 0.0
all-clusters-minimal-app LP_CC2652R7 (read only) 631443 631579 136 0.0
.text 553812 553948 136 0.0
lock-ftd LP_CC2652R7 (read only) 668551 668695 144 0.0
.text 591864 592008 144 0.0
lock-mtd LP_CC2652R7 (read only) 617959 618103 144 0.0
.text 541384 541528 144 0.0
pump-app LP_CC2652R7 (read only) 677703 677847 144 0.0
.text 588788 588932 144 0.0
pump-controller-app LP_CC2652R7 (read only) 663527 663671 144 0.0
.text 578752 578896 144 0.0
shell LP_CC2652R7 (read only) 658150 658278 128 0.0
.text 572988 573116 128 0.0
cyw30739 light cyw930739m2evb_01 (read/write) 579134 579278 144 0.0
.app_xip_area 457904 458048 144 0.0
lock cyw930739m2evb_01 (read/write) 585070 585206 136 0.0
.app_xip_area 459104 459240 136 0.0
ota-requestor-no-progress-logging cyw930739m2evb_01 (read/write) 582206 582350 144 0.0
.app_xip_area 461824 461968 144 0.0
efr32 lighting-app BRD4161A (read/write) 1080652 1080812 160 0.0
.text 945588 945748 160 0.0
BRD4161A+rpc (read/write) 151948 1135148 983200 647.1
.text 983032 983192 160 0.0
BRD4161A+rs911x (read/write) 947172 947332 160 0.0
.text 804336 804496 160 0.0
lock-app BRD4161A+wf200 (read/write) 1128312 1128456 144 0.0
.text 982044 982188 144 0.0
window-app BRD4161A (read/write) 1074436 1074612 176 0.0
.text 937868 938044 176 0.0
esp32 all-clusters-app c3devkit (read only) 1019502 1019630 128 0.0
.flash.text 1019502 1019630 128 0.0
m5stack (read only) 1073435 1073555 120 0.0
.flash.text 1068051 1068171 120 0.0
k32w light k32w061+release (read/write) 658192 658320 128 0.0
.text 580884 581012 128 0.0
lock k32w061+release (read/write) 684964 685092 128 0.0
.text 607180 607308 128 0.0
linux all-clusters-app debug (read only) 2957841 2959089 1248 0.0
.text 2517106 2518354 1248 0.0
all-clusters-minimal-app debug (read only) 2810385 2811633 1248 0.0
.text 2370130 2371378 1248 0.1
bridge-app debug+rpc (read only) 2312809 2314057 1248 0.1
.text 1953122 1954370 1248 0.1
lighting-app debug+rpc (read only) 2548313 2549545 1232 0.0
.text 2164738 2165970 1232 0.1
lock-app debug (read only) 2512897 2514145 1248 0.0
.text 2119106 2120354 1248 0.1
ota-provider-app debug (read only) 2319617 2320865 1248 0.1
.text 1953426 1954674 1248 0.1
ota-requestor-app debug (read only) 2436785 2438017 1232 0.1
.text 2058402 2059634 1232 0.1
shell debug (read only) 2548169 2549401 1232 0.0
.text 2163426 2164658 1232 0.1
thermostat-no-ble arm64 (read only) 2592644 2593636 992 0.0
.text 2187520 2188512 992 0.0
tv-app debug (read only) 3099665 3100913 1248 0.0
.text 2662834 2664082 1248 0.0
tv-casting-app debug (read only) 5562865 5564113 1248 0.0
.text 4941794 4943042 1248 0.0
mbed lock-app CY8CPROTO_062_4343W+release (read/write) 2447488 2447616 128 0.0
.text 1410132 1410260 128 0.0
nrfconnect all-clusters-app nrf52840dk_nrf52840 (read/write) 1174495 1174623 128 0.0
text 810916 811052 136 0.0
all-clusters-minimal-app nrf52840dk_nrf52840 (read/write) 1154691 1154835 144 0.0
text 800360 800500 140 0.0
p6 all-clusters-app default (read/write) 2564576 2564736 160 0.0
.text 1522840 1523000 160 0.0
all-clusters-minimal-app default (read/write) 2509632 2509792 160 0.0
.text 1467896 1468056 160 0.0
light-app default (read/write) 2439928 2440088 160 0.0
.text 1398192 1398352 160 0.0
lock-app default (read/write) 2467160 2467320 160 0.0
.text 1425424 1425584 160 0.0
telink light-switch-app tlsr9518adk80d (read/write) 796636 796756 120 0.0
text 565132 565256 124 0.0
lighting-app tlsr9518adk80d (read/write) 816464 816592 128 0.0
text 581452 581580 128 0.0
Decreases (5 builds for cc13x2_26x2)
platform target config section 7c1b23d 1033f6a change % change
cc13x2_26x2 all-clusters-app LP_CC2652R7 (read/write) 185572 185428 -144 -0.1
lock-ftd LP_CC2652R7 (read/write) 172816 172672 -144 -0.1
pump-app LP_CC2652R7 (read/write) 164512 164368 -144 -0.1
pump-controller-app LP_CC2652R7 (read/write) 178808 178664 -144 -0.1
shell LP_CC2652R7 (read/write) 188576 188448 -128 -0.1
Full report (41 builds for cc13x2_26x2, cyw30739, efr32, esp32, k32w, linux, mbed, nrfconnect, p6, telink)
platform target config section 7c1b23d 1033f6a change % change
cc13x2_26x2 all-clusters-app LP_CC2652R7 (read only) 665651 665795 144 0.0
(read/write) 185572 185428 -144 -0.1
.bss 74116 74116 0 0.0
.data 3356 3356 0 0.0
.rodata 88067 88067 0 0.0
.text 577268 577412 144 0.0
all-clusters-minimal-app LP_CC2652R7 (read only) 631443 631579 136 0.0
(read/write) 157684 157684 0 0.0
.bss 73412 73412 0 0.0
.data 3356 3356 0 0.0
.rodata 77307 77307 0 0.0
.text 553812 553948 136 0.0
lock-ftd LP_CC2652R7 (read only) 668551 668695 144 0.0
(read/write) 172816 172672 -144 -0.1
.bss 71148 71148 0 0.0
.data 3280 3280 0 0.0
.rodata 76207 76207 0 0.0
.text 591864 592008 144 0.0
lock-mtd LP_CC2652R7 (read only) 617959 618103 144 0.0
(read/write) 144264 144264 0 0.0
.bss 66868 66868 0 0.0
.data 3280 3280 0 0.0
.rodata 76087 76087 0 0.0
.text 541384 541528 144 0.0
pump-app LP_CC2652R7 (read only) 677703 677847 144 0.0
(read/write) 164512 164368 -144 -0.1
.bss 71228 71228 0 0.0
.data 3280 3280 0 0.0
.rodata 88431 88431 0 0.0
.text 588788 588932 144 0.0
pump-controller-app LP_CC2652R7 (read only) 663527 663671 144 0.0
(read/write) 178808 178664 -144 -0.1
.bss 71348 71348 0 0.0
.data 3276 3276 0 0.0
.rodata 84295 84295 0 0.0
.text 578752 578896 144 0.0
shell LP_CC2652R7 (read only) 658150 658278 128 0.0
(read/write) 188576 188448 -128 -0.1
.bss 76420 76420 0 0.0
.data 3360 3360 0 0.0
.rodata 84846 84846 0 0.0
.text 572988 573116 128 0.0
cyw30739 light cyw930739m2evb_01 (read/write) 579134 579278 144 0.0
.app_xip_area 457904 458048 144 0.0
.bss 64184 64184 0 0.0
.data 716 716 0 0.0
.rodata 0 0 0 0.0
.text 112 112 0 0.0
lock cyw930739m2evb_01 (read/write) 585070 585206 136 0.0
.app_xip_area 459104 459240 136 0.0
.bss 68912 68912 0 0.0
.data 720 720 0 0.0
.rodata 0 0 0 0.0
.text 112 112 0 0.0
ota-requestor-no-progress-logging cyw930739m2evb_01 (read/write) 582206 582350 144 0.0
.app_xip_area 461824 461968 144 0.0
.bss 63392 63392 0 0.0
.data 660 660 0 0.0
.rodata 0 0 0 0.0
.text 112 112 0 0.0
efr32 lighting-app BRD4161A (read/write) 1080652 1080812 160 0.0
.bss 132996 132996 0 0.0
.data 2048 2048 0 0.0
.text 945588 945748 160 0.0
BRD4161A+rpc (read/write) 151948 1135148 983200 647.1
.bss 149676 149676 0 0.0
.data 2260 2260 0 0.0
.text 983032 983192 160 0.0
BRD4161A+rs911x (read/write) 947172 947332 160 0.0
.bss 140768 140768 0 0.0
.data 2048 2048 0 0.0
.text 804336 804496 160 0.0
lock-app BRD4161A+wf200 (read/write) 1128312 1128456 144 0.0
.bss 144184 144184 0 0.0
.data 2060 2060 0 0.0
.text 982044 982188 144 0.0
window-app BRD4161A (read/write) 1074436 1074612 176 0.0
.bss 134468 134468 0 0.0
.data 2076 2076 0 0.0
.text 937868 938044 176 0.0
esp32 all-clusters-app c3devkit (read only) 1019502 1019630 128 0.0
(read/write) 1485458 1485458 0 0.0
.dram0.bss 70080 70080 0 0.0
.dram0.data 14600 14600 0 0.0
.flash.rodata 215344 215344 0 0.0
.flash.text 1019502 1019630 128 0.0
.iram0.text 62902 62902 0 0.0
m5stack (read only) 1073435 1073555 120 0.0
(read/write) 487536 487536 0 0.0
.dram0.bss 75600 75600 0 0.0
.dram0.data 34144 34144 0 0.0
.flash.rodata 245796 245796 0 0.0
.flash.text 1068051 1068171 120 0.0
.iram0.text 123267 123267 0 0.0
k32w light k32w061+release (read/write) 658192 658320 128 0.0
.bss 69516 69516 0 0.0
.data 1992 1992 0 0.0
.text 580884 581012 128 0.0
lock k32w061+release (read/write) 684964 685092 128 0.0
.bss 69980 69980 0 0.0
.data 2004 2004 0 0.0
.text 607180 607308 128 0.0
linux all-clusters-app debug (read only) 2957841 2959089 1248 0.0
(read/write) 154744 154744 0 0.0
.bss 61536 61536 0 0.0
.data 2048 2048 0 0.0
.data.rel.ro 84968 84968 0 0.0
.dynamic 608 608 0 0.0
.got 4536 4536 0 0.0
.init 27 27 0 0.0
.init_array 1040 1040 0 0.0
.rodata 263549 263549 0 0.0
.text 2517106 2518354 1248 0.0
all-clusters-minimal-app debug (read only) 2810385 2811633 1248 0.0
(read/write) 146680 146680 0 0.0
.bss 60864 60864 0 0.0
.data 2048 2048 0 0.0
.data.rel.ro 77608 77608 0 0.0
.dynamic 608 608 0 0.0
.got 4488 4488 0 0.0
.init 27 27 0 0.0
.init_array 1040 1040 0 0.0
.rodata 265245 265245 0 0.0
.text 2370130 2371378 1248 0.1
bridge-app debug+rpc (read only) 2312809 2314057 1248 0.1
(read/write) 125504 125504 0 0.0
.bss 48928 48928 0 0.0
.data 3824 3824 0 0.0
.data.rel.ro 66984 66984 0 0.0
.dynamic 608 608 0 0.0
.got 4392 4392 0 0.0
.init 27 27 0 0.0
.init_array 728 728 0 0.0
.rodata 197952 197952 0 0.0
.text 1953122 1954370 1248 0.1
chip-tool debug (read only) 10296393 10296393 0 0.0
(read/write) 621312 621312 0 0.0
.bss 24728 24728 0 0.0
.data 3234 3234 0 0.0
.data.rel.ro 586944 586944 0 0.0
.dynamic 608 608 0 0.0
.got 5096 5096 0 0.0
.init 27 27 0 0.0
.init_array 640 640 0 0.0
.rodata 514197 514197 0 0.0
.text 8352740 8352740 0 0.0
chip-tool-no-interactive-ipv6only arm64 (read only) 9989956 9989956 0 0.0
(read/write) 683569 683569 0 0.0
.bss 42609 42609 0 0.0
.data 1152 1152 0 0.0
.data.rel.ro 622480 622480 0 0.0
.dynamic 528 528 0 0.0
.got 13512 13512 0 0.0
.init 24 24 0 0.0
.init_array 192 192 0 0.0
.rodata 476340 476340 0 0.0
.text 7955268 7955268 0 0.0
lighting-app debug+rpc (read only) 2548313 2549545 1232 0.0
(read/write) 129528 129528 0 0.0
.bss 49440 49440 0 0.0
.data 2096 2096 0 0.0
.data.rel.ro 72136 72136 0 0.0
.dynamic 608 608 0 0.0
.got 4392 4392 0 0.0
.init 27 27 0 0.0
.init_array 816 816 0 0.0
.rodata 213608 213608 0 0.0
.text 2164738 2165970 1232 0.1
lock-app debug (read only) 2512897 2514145 1248 0.0
(read/write) 124504 124504 0 0.0
.bss 47840 47840 0 0.0
.data 1712 1712 0 0.0
.data.rel.ro 69096 69096 0 0.0
.dynamic 608 608 0 0.0
.got 4424 4424 0 0.0
.init 27 27 0 0.0
.init_array 784 784 0 0.0
.rodata 228648 228648 0 0.0
.text 2119106 2120354 1248 0.1
ota-provider-app debug (read only) 2319617 2320865 1248 0.1
(read/write) 118312 118312 0 0.0
.bss 47488 47488 0 0.0
.data 1944 1944 0 0.0
.data.rel.ro 63096 63096 0 0.0
.dynamic 608 608 0 0.0
.got 4488 4488 0 0.0
.init 27 27 0 0.0
.init_array 672 672 0 0.0
.rodata 203416 203416 0 0.0
.text 1953426 1954674 1248 0.1
ota-requestor-app debug (read only) 2436785 2438017 1232 0.1
(read/write) 125216 125216 0 0.0
.bss 49856 49856 0 0.0
.data 2232 2232 0 0.0
.data.rel.ro 67288 67288 0 0.0
.dynamic 608 608 0 0.0
.got 4480 4480 0 0.0
.init 27 27 0 0.0
.init_array 728 728 0 0.0
.rodata 207232 207232 0 0.0
.text 2058402 2059634 1232 0.1
shell debug (read only) 2548169 2549401 1232 0.0
(read/write) 141096 141096 0 0.0
.bss 57448 57448 0 0.0
.data 1264 1264 0 0.0
.data.rel.ro 76688 76688 0 0.0
.dynamic 608 608 0 0.0
.got 4136 4136 0 0.0
.init 27 27 0 0.0
.init_array 920 920 0 0.0
.rodata 227666 227666 0 0.0
.text 2163426 2164658 1232 0.1
thermostat-no-ble arm64 (read only) 2592644 2593636 992 0.0
(read/write) 158289 158289 0 0.0
.bss 65249 65249 0 0.0
.data 1704 1704 0 0.0
.data.rel.ro 83240 83240 0 0.0
.dynamic 528 528 0 0.0
.got 5072 5072 0 0.0
.init 24 24 0 0.0
.init_array 400 400 0 0.0
.rodata 165348 165348 0 0.0
.text 2187520 2188512 992 0.0
tv-app debug (read only) 3099665 3100913 1248 0.0
(read/write) 257704 257704 0 0.0
.bss 167016 167016 0 0.0
.data 4848 4848 0 0.0
.data.rel.ro 79392 79392 0 0.0
.dynamic 608 608 0 0.0
.got 4848 4848 0 0.0
.init 27 27 0 0.0
.init_array 952 952 0 0.0
.rodata 248928 248928 0 0.0
.text 2662834 2664082 1248 0.0
tv-casting-app debug (read only) 5562865 5564113 1248 0.0
(read/write) 161968 161968 0 0.0
.bss 50248 50248 0 0.0
.data 2416 2416 0 0.0
.data.rel.ro 103048 103048 0 0.0
.dynamic 608 608 0 0.0
.got 4736 4736 0 0.0
.init 27 27 0 0.0
.init_array 864 864 0 0.0
.rodata 343209 343209 0 0.0
.text 4941794 4943042 1248 0.0
mbed lock-app CY8CPROTO_062_4343W+release (read only) 6224 6224 0 0.0
(read/write) 2447488 2447616 128 0.0
.bss 213940 213940 0 0.0
.data 5872 5872 0 0.0
.text 1410132 1410260 128 0.0
nrfconnect all-clusters-app nrf52840dk_nrf52840 (read/write) 1174495 1174623 128 0.0
bss 142900 142900 0 0.0
rodata 141776 141776 0 0.0
text 810916 811052 136 0.0
all-clusters-minimal-app nrf52840dk_nrf52840 (read/write) 1154691 1154835 144 0.0
bss 142136 142136 0 0.0
rodata 133308 133308 0 0.0
text 800360 800500 140 0.0
p6 all-clusters-app default (read/write) 2564576 2564736 160 0.0
.bss 149120 149120 0 0.0
.data 2776 2776 0 0.0
.text 1522840 1523000 160 0.0
all-clusters-minimal-app default (read/write) 2509632 2509792 160 0.0
.bss 148400 148400 0 0.0
.data 2776 2776 0 0.0
.text 1467896 1468056 160 0.0
light-app default (read/write) 2439928 2440088 160 0.0
.bss 140456 140456 0 0.0
.data 2592 2592 0 0.0
.text 1398192 1398352 160 0.0
lock-app default (read/write) 2467160 2467320 160 0.0
.bss 140304 140304 0 0.0
.data 2600 2600 0 0.0
.text 1425424 1425584 160 0.0
telink light-switch-app tlsr9518adk80d (read/write) 796636 796756 120 0.0
bss 70576 70576 0 0.0
noinit 40416 40416 0 0.0
text 565132 565256 124 0.0
lighting-app tlsr9518adk80d (read/write) 816464 816592 128 0.0
bss 71420 71420 0 0.0
noinit 40416 40416 0 0.0
text 581452 581580 128 0.0

@andy31415 andy31415 merged commit 7c5c3f0 into sve Jul 9, 2022
@andy31415 andy31415 deleted the cherry-pick-e6e43fa384d391d111a22902361ff8e588f7a8e8 branch July 9, 2022 12:36
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