mirror of
https://github.com/ARM-software/arm-trusted-firmware.git
synced 2025-04-17 01:54:22 +00:00
Merge "fix(intel): update fcs crypto init code to check for mode" into integration
This commit is contained in:
commit
bb31fbcef1
1 changed files with 26 additions and 7 deletions
|
@ -2175,14 +2175,28 @@ int intel_fcs_aes_crypt_init(uint32_t session_id, uint32_t context_id,
|
|||
|
||||
param_addr_ptr = (uint64_t *) param_addr;
|
||||
|
||||
/*
|
||||
* Since crypto param size vary between mode.
|
||||
* Check ECB here and limit to size 12 bytes
|
||||
*/
|
||||
if (((*param_addr_ptr & FCS_CRYPTO_BLOCK_MODE_MASK) == FCS_CRYPTO_ECB_MODE) &&
|
||||
(param_size > FCS_CRYPTO_ECB_BUFFER_SIZE)) {
|
||||
/* Check if mbox_error is not NULL or 0xF or 0x3FF */
|
||||
if (mbox_error == NULL || *mbox_error > 0xF ||
|
||||
(*mbox_error != 0 && *mbox_error != 0x3FF)) {
|
||||
return INTEL_SIP_SMC_STATUS_REJECTED;
|
||||
}
|
||||
|
||||
/* Check if param_addr is not 0 or larger that 0xFFFFFFFFFF */
|
||||
if (param_addr == 0 || param_addr > 0xFFFFFFFFFF) {
|
||||
return INTEL_SIP_SMC_STATUS_REJECTED;
|
||||
}
|
||||
|
||||
/*
|
||||
* Check if not ECB, CBC and CTR mode, addr ptr is NULL.
|
||||
* Return "Reject" status
|
||||
*/
|
||||
if ((param_addr_ptr == NULL) ||
|
||||
(((*param_addr_ptr & FCS_CRYPTO_BLOCK_MODE_MASK) != FCS_CRYPTO_ECB_MODE) &&
|
||||
((*param_addr_ptr & FCS_CRYPTO_BLOCK_MODE_MASK) != FCS_CRYPTO_CBC_MODE) &&
|
||||
((*param_addr_ptr & FCS_CRYPTO_BLOCK_MODE_MASK) != FCS_CRYPTO_CTR_MODE))) {
|
||||
return INTEL_SIP_SMC_STATUS_REJECTED;
|
||||
}
|
||||
|
||||
/*
|
||||
* Since crypto param size vary between mode.
|
||||
* Check CBC/CTR here and limit to size 28 bytes
|
||||
|
@ -2193,7 +2207,12 @@ int intel_fcs_aes_crypt_init(uint32_t session_id, uint32_t context_id,
|
|||
return INTEL_SIP_SMC_STATUS_REJECTED;
|
||||
}
|
||||
|
||||
if (mbox_error == NULL) {
|
||||
/*
|
||||
* Since crypto param size vary between mode.
|
||||
* Check ECB here and limit to size 12 bytes
|
||||
*/
|
||||
if (((*param_addr_ptr & FCS_CRYPTO_BLOCK_MODE_MASK) == FCS_CRYPTO_ECB_MODE) &&
|
||||
(param_size > FCS_CRYPTO_ECB_BUFFER_SIZE)) {
|
||||
return INTEL_SIP_SMC_STATUS_REJECTED;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue