Explorar o código

fix aes decrypt panic

ls %!s(int64=3) %!d(string=hai) anos
pai
achega
267c98bf15
Modificáronse 1 ficheiros con 4 adicións e 0 borrados
  1. 4 0
      crypto.go

+ 4 - 0
crypto.go

@@ -4,6 +4,7 @@ import (
 	"bytes"
 	"crypto/aes"
 	"crypto/cipher"
+	"errors"
 )
 
 var (
@@ -63,6 +64,9 @@ func (a *AesCrypto) Decrypt(crypted []byte) ([]byte, error) {
 		return nil, err
 	}
 	blockSize := block.BlockSize()
+	if len(crypted)%blockSize != 0 {
+		return nil, errors.New(`crypto/cipher: input not full blocks`)
+	}
 	blockMode := cipher.NewCBCDecrypter(block, a.IV[:blockSize])
 	origData := make([]byte, len(crypted))
 	blockMode.CryptBlocks(origData, crypted)