pkcs#1 v1.5 decode: fix missing check of PS length in EMSA mode
This commit is contained in:
parent
2b3c603c6c
commit
d51715db72
@ -65,9 +65,8 @@ int pkcs_1_v1_5_decode(const unsigned char *msg,
|
||||
}
|
||||
ps_len = i++ - 2;
|
||||
|
||||
if ((i >= modulus_len) || (ps_len < 8)) {
|
||||
/* There was no octet with hexadecimal value 0x00 to separate ps from m,
|
||||
* or the length of ps is less than 8 octets.
|
||||
if (i >= modulus_len) {
|
||||
/* There was no octet with hexadecimal value 0x00 to separate ps from m.
|
||||
*/
|
||||
result = CRYPT_INVALID_PACKET;
|
||||
goto bail;
|
||||
@ -87,6 +86,14 @@ int pkcs_1_v1_5_decode(const unsigned char *msg,
|
||||
ps_len = i - 2;
|
||||
}
|
||||
|
||||
if (ps_len < 8)
|
||||
{
|
||||
/* The length of ps is less than 8 octets.
|
||||
*/
|
||||
result = CRYPT_INVALID_PACKET;
|
||||
goto bail;
|
||||
}
|
||||
|
||||
if (*outlen < (msglen - (2 + ps_len + 1))) {
|
||||
*outlen = msglen - (2 + ps_len + 1);
|
||||
result = CRYPT_BUFFER_OVERFLOW;
|
||||
|
Loading…
Reference in New Issue
Block a user