1
0
mirror of https://github.com/vlang/v.git synced 2023-08-10 21:13:21 +03:00

checker: disallow address of array and map index outside unsafe (#6557)

This commit is contained in:
Swastik Baranwal
2020-10-05 16:38:30 +05:30
committed by GitHub
parent 2b1a5d7a56
commit 5f07b255bd
12 changed files with 54 additions and 25 deletions

View File

@ -16,8 +16,8 @@ pub fn any_overlap(x, y []byte) bool {
return x.len > 0 && y.len > 0 &&
// &x.data[0] <= &y.data[y.len-1] &&
// &y.data[0] <= &x.data[x.len-1]
&x[0] <= &y[y.len-1] &&
&y[0] <= &x[x.len-1]
unsafe { &x[0] <= &y[y.len-1] &&
&y[0] <= &x[x.len-1] }
}
// inexact_overlap reports whether x and y share memory at any non-corresponding
@ -27,7 +27,7 @@ pub fn any_overlap(x, y []byte) bool {
// inexact_overlap can be used to implement the requirements of the crypto/cipher
// AEAD, Block, BlockMode and Stream interfaces.
pub fn inexact_overlap(x, y []byte) bool {
if x.len == 0 || y.len == 0 || &x[0] == &y[0] {
if x.len == 0 || y.len == 0 || unsafe { &x[0] == &y[0] } {
return false
}
return any_overlap(x, y)