// Copyright 2018 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

// Package alias implements memory aliasing tests. // This code also exists as golang.org/x/crypto/internal/alias.
package alias import // AnyOverlap reports whether x and y share memory at any (not necessarily // corresponding) index. The memory beyond the slice length is ignored. func (, []byte) bool { return len() > 0 && len() > 0 && uintptr(unsafe.Pointer(&[0])) <= uintptr(unsafe.Pointer(&[len()-1])) && uintptr(unsafe.Pointer(&[0])) <= uintptr(unsafe.Pointer(&[len()-1])) } // InexactOverlap reports whether x and y share memory at any non-corresponding // index. The memory beyond the slice length is ignored. Note that x and y can // have different lengths and still not have any inexact overlap. // // InexactOverlap can be used to implement the requirements of the crypto/cipher // AEAD, Block, BlockMode and Stream interfaces. func (, []byte) bool { if len() == 0 || len() == 0 || &[0] == &[0] { return false } return AnyOverlap(, ) }