diff options
author | Krzysztof Jackiewicz <k.jackiewicz@samsung.com> | 2019-08-28 14:44:13 +0200 |
---|---|---|
committer | Krzysztof Jackiewicz <k.jackiewicz@samsung.com> | 2019-09-06 09:59:17 +0000 |
commit | e6437523209a9a8a3d70a0853f1bd57a381feecc (patch) | |
tree | b42ea4b0372ffdc13e085c1b89045b7f6931dd8d | |
parent | 036358c5fa63c18a9cd6ddd3b499401bd2515416 (diff) | |
download | tef-simulator-e6437523209a9a8a3d70a0853f1bd57a381feecc.tar.gz tef-simulator-e6437523209a9a8a3d70a0853f1bd57a381feecc.tar.bz2 tef-simulator-e6437523209a9a8a3d70a0853f1bd57a381feecc.zip |
Properly handle TEE_ObjectHandle output argument
According to GP spec v1.1 and v1.2 TEE_CreatePersistentObject
and TEE_OpenPersistentObject should set 'object' argument to
TEE_HANDLE_NULL in case of failure.
Change-Id: I23c0a7b631482eb863f0d09232a5a8f9e47c0593
-rw-r--r-- | ssflib/src/ssf_storage.cpp | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/ssflib/src/ssf_storage.cpp b/ssflib/src/ssf_storage.cpp index fce2d51..44369ae 100644 --- a/ssflib/src/ssf_storage.cpp +++ b/ssflib/src/ssf_storage.cpp @@ -1792,6 +1792,10 @@ TEE_Result TEE_CreatePersistentObject(uint32_t storageID, const void* objectID, const void* initialData, size_t initialDataLen, TEE_ObjectHandle* object) { PERMISSION_CHECK(PERM_STORAGE); persistent_object* po = NULL; + + if (object) + *object = TEE_HANDLE_NULL; + TEE_Result rc = allocate_persistent_object(&po, storageID, objectID, objectIDLen, flags); TransientObject* tr_obj = NULL; @@ -1830,6 +1834,10 @@ TEE_Result TEE_OpenPersistentObject(uint32_t storageID, const void* objectID, size_t objectIDLen, uint32_t flags, TEE_ObjectHandle* object) { PERMISSION_CHECK(PERM_STORAGE); persistent_object* po = NULL; + + if (object) + *object = TEE_HANDLE_NULL; + TEE_Result rc = allocate_persistent_object(&po, storageID, objectID, objectIDLen, flags); if (rc) { @@ -1840,7 +1848,8 @@ TEE_Result TEE_OpenPersistentObject(uint32_t storageID, const void* objectID, FREE_PO(po); return rc; } - *object = (TEE_ObjectHandle)&po->attr.info; + if (object) + *object = (TEE_ObjectHandle)&po->attr.info; return TEE_SUCCESS; } |