[SR-3343] Investigate Array Canaries for withUnsafe operations #45931
Labels
diagnostics QoI
Bug: Diagnostics Quality of Implementation
good first issue
Good for newcomers
improvement
standard library
Area: Standard library umbrella
Additional Detail from JIRA
md5: c68651c162da6db48a6cc867e161ffe0
Issue Description:
We provide several operations which expose the guts of an Array as an UnsafePointer in a closure. This provides an opportunity for developers to mess up and scribble past the bounds of the Array. As a QoI feature, we should look into opportunistically installing a canary at the end of the Array in debug builds.
Basic idea:
At the start of withUnsafeBufferPointer (before the closure is called), check if the array has some slack capacity.
If it does, write some specific bit pattern to the extra space (just the last byte?).
At the end of withUnsafeBufferPointer (after the closure has been called), check if the bit pattern is in tact. If not, assert that a buffer overflow occurred.
This obviously isn't a robust protection against buffer overflows, but maybe it will catch some programmer errors!
I'm happy to mentor anyone who wishes to work on this.
The text was updated successfully, but these errors were encountered: