From: Krzysztof Jackiewicz Date: Wed, 28 Aug 2019 12:44:13 +0000 (+0200) Subject: Properly handle TEE_ObjectHandle output argument X-Git-Tag: submit/tizen/20191113.060832~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=e6437523209a9a8a3d70a0853f1bd57a381feecc;p=platform%2Fcore%2Fsecurity%2Ftef-simulator.git 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 --- 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; }