mirror of
https://github.com/golang/go
synced 2024-11-25 09:47:57 -07:00
crypto/aes: add missing aes-gcm buffer overlap checks to PPC64
The tests added by CL 601778 highlighted missing buffer overlap checks in the ppc64 specific aes-gcm implementation. Fixes #69007 Change-Id: I80c3b5628c5079cfed2c3dace7298512c16a8f46 Reviewed-on: https://go-review.googlesource.com/c/go/+/607519 Reviewed-by: Cherry Mui <cherryyz@google.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
This commit is contained in:
parent
2cee5d8109
commit
1e9c5bbc8a
@ -8,6 +8,7 @@ package aes
|
||||
|
||||
import (
|
||||
"crypto/cipher"
|
||||
"crypto/internal/alias"
|
||||
"crypto/subtle"
|
||||
"errors"
|
||||
"internal/byteorder"
|
||||
@ -171,6 +172,9 @@ func (g *gcmAsm) Seal(dst, nonce, plaintext, data []byte) []byte {
|
||||
}
|
||||
|
||||
ret, out := sliceForAppend(dst, len(plaintext)+g.tagSize)
|
||||
if alias.InexactOverlap(out[:len(plaintext)], plaintext) {
|
||||
panic("crypto/cipher: invalid buffer overlap")
|
||||
}
|
||||
|
||||
var counter, tagMask [gcmBlockSize]byte
|
||||
g.deriveCounter(&counter, nonce)
|
||||
@ -210,6 +214,9 @@ func (g *gcmAsm) Open(dst, nonce, ciphertext, data []byte) ([]byte, error) {
|
||||
g.auth(expectedTag[:], ciphertext, data, &tagMask)
|
||||
|
||||
ret, out := sliceForAppend(dst, len(ciphertext))
|
||||
if alias.InexactOverlap(out, ciphertext) {
|
||||
panic("crypto/cipher: invalid buffer overlap")
|
||||
}
|
||||
|
||||
if subtle.ConstantTimeCompare(expectedTag[:g.tagSize], tag) != 1 {
|
||||
clear(out)
|
||||
|
Loading…
Reference in New Issue
Block a user