-
Notifications
You must be signed in to change notification settings - Fork 2.1k
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
yufengwangca
merged 3 commits into
project-chip:master
from
ksperling-apple:safeattr-bytespans
Jul 14, 2024
Merged
Support raw ByteSpan values correctly in SafeAttributePersistenceProvider #34306
yufengwangca
merged 3 commits into
project-chip:master
from
ksperling-apple:safeattr-bytespans
Jul 14, 2024
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
pullapprove
bot
requested review from
andy31415,
andyg-apple,
anush-apple,
arkq,
axelnxp,
bauerschwan,
bzbarsky-apple,
carol-apple,
cecille,
chapongatien,
chrisdecenzo,
chshu,
chulspro,
cliffamzn,
Damian-Nordic,
dhrishi,
doru91,
fessehaeve,
harimau-qirex,
harsha-rajendran,
hawk248,
hicklin,
jepenven-silabs,
jmartinez-silabs,
jmeg-sfy,
joonhaengHeo,
jtung-apple,
kiel-apple and
kkasperczyk-no
July 12, 2024 04:10
pullapprove
bot
requested review from
sharadb-amazon,
tecimovic,
tehampson,
tima-q,
tobiasgraf,
turon,
vivien-apple,
wiba-nordic,
woody-apple,
younghak-hwang,
yufengwangca and
yunhanw-google
July 12, 2024 04:10
ksperling-apple
force-pushed
the
safeattr-bytespans
branch
from
July 12, 2024 04:11
bb27dd2
to
bc7cd2d
Compare
…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
force-pushed
the
safeattr-bytespans
branch
from
July 12, 2024 04:23
bc7cd2d
to
3f74144
Compare
ksperling-apple
changed the title
Support raw ByteSpan values correctly in SafeattributePersistenceProvider
Support raw ByteSpan values correctly in SafeAttributePersistenceProvider
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)
|
bzbarsky-apple
approved these changes
Jul 12, 2024
PR #34306: Size comparison from d856745 to 7602515 Increases above 0.2%:
Full report (85 builds for bl602, bl702, bl702l, cc13x4_26x4, cc32xx, cyw30739, efr32, esp32, linux, mbed, nrfconnect, nxp, psoc6, qpg, stm32, telink, tizen)
|
yufengwangca
approved these changes
Jul 14, 2024
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
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The
DefaultAttributePersistenceProvider
implementation ofSafeReadValue()
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 thatSafeReadValue()
was previously protected inSafeAttributePersistenceProvider
, but public in theDefaultAttributePersistenceProvider
implementation.)Instead move this validation into
ReadScalarValue()
inSafeAttributePersistenceProvider
, and separateInternalReadValue()
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 fromSafeReadValue()
.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.