diff options
Diffstat (limited to 'core/tee')
-rw-r--r-- | core/tee/se/aid.c | 7 | ||||
-rw-r--r-- | core/tee/se/iso7816.c | 4 | ||||
-rw-r--r-- | core/tee/se/manager.c | 1 | ||||
-rw-r--r-- | core/tee/se/reader.c | 4 | ||||
-rw-r--r-- | core/tee/se/reader/passthru_reader/reader.c | 16 | ||||
-rw-r--r-- | core/tee/tee_fs_key_manager.c | 5 | ||||
-rw-r--r-- | core/tee/tee_ree_fs.c | 8 | ||||
-rw-r--r-- | core/tee/tee_rpmb_fs.c | 9 |
8 files changed, 30 insertions, 24 deletions
diff --git a/core/tee/se/aid.c b/core/tee/se/aid.c index 5cb0cf11..690fbe84 100644 --- a/core/tee/se/aid.c +++ b/core/tee/se/aid.c @@ -27,7 +27,6 @@ #include <assert.h> #include <kernel/panic.h> -#include <kernel/tee_common_unpg.h> #include <stdlib.h> #include <string.h> #include <tee_api_types.h> @@ -44,7 +43,8 @@ TEE_Result tee_se_aid_create(const char *name, struct tee_se_aid **aid) size_t aid_length = str_length / 2; assert(aid); - TEE_ASSERT(!*aid); + if (*aid) + panic(); if (str_length < MIN_AID_LENGTH || str_length > MAX_AID_LENGTH) return TEE_ERROR_BAD_PARAMETERS; @@ -86,7 +86,8 @@ int tee_se_aid_get_refcnt(struct tee_se_aid *aid) void tee_se_aid_release(struct tee_se_aid *aid) { assert(aid); - TEE_ASSERT(aid->refcnt > 0); + if (aid->refcnt <= 0) + panic(); aid->refcnt--; if (!aid->refcnt) free(aid); diff --git a/core/tee/se/iso7816.c b/core/tee/se/iso7816.c index 2bf19d6b..4fbd5ced 100644 --- a/core/tee/se/iso7816.c +++ b/core/tee/se/iso7816.c @@ -27,7 +27,6 @@ #include <assert.h> #include <kernel/panic.h> -#include <kernel/tee_common_unpg.h> #include <malloc.h> #include <stdlib.h> #include <string.h> @@ -95,7 +94,8 @@ static TEE_Result internal_select(struct tee_se_channel *c, s = tee_se_channel_get_session(c); channel_id = tee_se_channel_get_id(c); - TEE_ASSERT(channel_id < MAX_LOGICAL_CHANNEL); + if (channel_id >= MAX_LOGICAL_CHANNEL) + panic(); cla_channel = iso7816_get_cla_channel(channel_id); if (select_ops == FIRST_OR_ONLY_OCCURRENCE) { diff --git a/core/tee/se/manager.c b/core/tee/se/manager.c index 144ea026..30b35f61 100644 --- a/core/tee/se/manager.c +++ b/core/tee/se/manager.c @@ -27,7 +27,6 @@ #include <initcall.h> #include <trace.h> -#include <kernel/tee_common_unpg.h> #include <kernel/mutex.h> #include <tee/se/manager.h> #include <tee/se/session.h> diff --git a/core/tee/se/reader.c b/core/tee/se/reader.c index 450571d9..5b383ef8 100644 --- a/core/tee/se/reader.c +++ b/core/tee/se/reader.c @@ -28,7 +28,6 @@ #include <assert.h> #include <kernel/mutex.h> #include <kernel/panic.h> -#include <kernel/tee_common_unpg.h> #include <string.h> #include <tee_api_types.h> #include <trace.h> @@ -110,7 +109,8 @@ TEE_Result tee_se_reader_attach(struct tee_se_reader_proxy *proxy) void tee_se_reader_detach(struct tee_se_reader_proxy *proxy) { - TEE_ASSERT(proxy->refcnt > 0); + if (proxy->refcnt <= 0) + panic(); mutex_lock(&proxy->mutex); proxy->refcnt--; diff --git a/core/tee/se/reader/passthru_reader/reader.c b/core/tee/se/reader/passthru_reader/reader.c index 45fe190d..4cb13e15 100644 --- a/core/tee/se/reader/passthru_reader/reader.c +++ b/core/tee/se/reader/passthru_reader/reader.c @@ -26,15 +26,14 @@ */ #include <io.h> -#include <trace.h> -#include <kernel/tee_common_unpg.h> +#include <kernel/panic.h> #include <mm/core_memprot.h> +#include <stdio.h> +#include <trace.h> #include <tee/se/util.h> #include <tee/se/reader/interface.h> -#include <stdio.h> - #include "pcsc.h" #include "reader.h" @@ -113,7 +112,8 @@ static void pcsc_reader_get_atr(struct pcsc_reader *r) static void pcsc_reader_connect(struct pcsc_reader *r) { - TEE_ASSERT(!r->connected); + if (r->connected) + panic(); pcsc_reader_write_reg(r, PCSC_REG_READER_CONTROL, PCSC_READER_CTL_CONNECT | @@ -125,7 +125,8 @@ static void pcsc_reader_connect(struct pcsc_reader *r) static void pcsc_reader_disconnect(struct pcsc_reader *r) { - TEE_ASSERT(r->connected); + if (!r->connected) + panic(); pcsc_reader_write_reg(r, PCSC_REG_READER_CONTROL, PCSC_READER_CTL_DISCONNECT | @@ -139,7 +140,8 @@ static TEE_Result pcsc_reader_transmit(struct pcsc_reader *r, uint8_t *tx_buf, { uint32_t tx_buf_paddr = 0, rx_buf_paddr = 0; - TEE_ASSERT(r->connected); + if (!r->connected) + panic(); tx_buf_paddr = virt_to_phys((void *)tx_buf); rx_buf_paddr = virt_to_phys((void *)rx_buf); diff --git a/core/tee/tee_fs_key_manager.c b/core/tee/tee_fs_key_manager.c index 8fa22828..6636554c 100644 --- a/core/tee/tee_fs_key_manager.c +++ b/core/tee/tee_fs_key_manager.c @@ -40,8 +40,8 @@ #include <initcall.h> #include <stdlib.h> #include <string.h> +#include <kernel/panic.h> #include <kernel/tee_common_otp.h> -#include <kernel/tee_common_unpg.h> #include <kernel/tee_ta_manager.h> #include <tee/tee_cryp_utl.h> #include <tee/tee_cryp_provider.h> @@ -286,8 +286,7 @@ size_t tee_fs_get_header_size(enum tee_fs_file_type type) header_size = sizeof(struct block_header); break; default: - EMSG("Unknown file type, type=%d", type); - TEE_ASSERT(0); + panic(); } return header_size; diff --git a/core/tee/tee_ree_fs.c b/core/tee/tee_ree_fs.c index b60d8ede..4ef07ffd 100644 --- a/core/tee/tee_ree_fs.c +++ b/core/tee/tee_ree_fs.c @@ -26,10 +26,10 @@ */ #include <assert.h> -#include <kernel/tee_common_unpg.h> #include <kernel/thread.h> #include <kernel/handle.h> #include <kernel/mutex.h> +#include <kernel/panic.h> #include <mm/core_memprot.h> #include <optee_msg.h> #include <stdio.h> @@ -744,7 +744,8 @@ static int read_and_decrypt_file(int fd, if (res < 0) return res; - TEE_ASSERT(file_size >= header_size); + if (file_size < header_size) + panic(); ciphertext = malloc(file_size); if (!ciphertext) { @@ -1995,7 +1996,8 @@ static int ree_fs_rename(const char *old, const char *new) } /* finally, link the meta file, rename operation completed */ - TEE_ASSERT(meta_filename); + if (!meta_filename) + panic(); /* * TODO: This will cause memory leakage at previous strdup() diff --git a/core/tee/tee_rpmb_fs.c b/core/tee/tee_rpmb_fs.c index c1b284f9..a7755777 100644 --- a/core/tee/tee_rpmb_fs.c +++ b/core/tee/tee_rpmb_fs.c @@ -29,6 +29,7 @@ #include <kernel/tee_common.h> #include <kernel/handle.h> #include <kernel/mutex.h> +#include <kernel/panic.h> #include <kernel/tee_common_otp.h> #include <kernel/thread.h> #include <optee_msg.h> @@ -538,7 +539,9 @@ static TEE_Result decrypt(uint8_t *out, const struct rpmb_data_frame *frm, { uint8_t *tmp __maybe_unused; - TEE_ASSERT(size + offset <= RPMB_DATA_SIZE); + + if ((size + offset < size) || (size + offset > RPMB_DATA_SIZE)) + panic(); if (!fek) { /* Block is not encrypted (not a file data block) */ @@ -568,7 +571,6 @@ static TEE_Result decrypt(uint8_t *out, const struct rpmb_data_frame *frm, memcpy(out, tmp + offset, size); free(tmp); } else { - TEE_ASSERT(!offset); decrypt_block(out, frm->data, blk_idx, fek); } #else @@ -2180,7 +2182,8 @@ static int rpmb_fs_write(TEE_Result *errno, int fd, const void *buf, if (res != TEE_SUCCESS) goto out; - TEE_ASSERT(!(fh->fat_entry.flags & FILE_IS_LAST_ENTRY)); + if (fh->fat_entry.flags & FILE_IS_LAST_ENTRY) + panic(); end = fh->pos + size; start_addr = fh->fat_entry.start_address + fh->pos; |