Fix segfault in tests if the driver is not loaded
If the FF-A TEE driver is not loaded the setup phase of the tests will
fail as expected but then the teardown function tries to free
unallocated resources causing a segfault. This patch fixes teardown
functions by first checking if the resources were allocated before
freeing them up.
Signed-off-by: Imre Kis <imre.kis@arm.com>
Change-Id: Icacfdf7d8d3808503cb45a4a9233b7b2479f9aa2
diff --git a/components/app/ts-demo/test/ts-demo_tests.cpp b/components/app/ts-demo/test/ts-demo_tests.cpp
index 2cc8973..92f7369 100644
--- a/components/app/ts-demo/test/ts-demo_tests.cpp
+++ b/components/app/ts-demo/test/ts-demo_tests.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2020-2021, Arm Limited and Contributors. All rights reserved.
+ * Copyright (c) 2020-2022, Arm Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
@@ -39,11 +39,15 @@
delete m_crypto_client;
m_crypto_client = NULL;
- service_context_close(m_crypto_service_context, m_rpc_session_handle);
- m_rpc_session_handle = NULL;
+ if (m_crypto_service_context) {
+ if (m_rpc_session_handle) {
+ service_context_close(m_crypto_service_context, m_rpc_session_handle);
+ m_rpc_session_handle = NULL;
+ }
- service_context_relinquish(m_crypto_service_context);
- m_crypto_service_context = NULL;
+ service_context_relinquish(m_crypto_service_context);
+ m_crypto_service_context = NULL;
+ }
}
rpc_session_handle m_rpc_session_handle;
diff --git a/components/service/attestation/test/service/attestation_provisioning_tests.cpp b/components/service/attestation/test/service/attestation_provisioning_tests.cpp
index 4237bdf..204ab4c 100644
--- a/components/service/attestation/test/service/attestation_provisioning_tests.cpp
+++ b/components/service/attestation/test/service/attestation_provisioning_tests.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2021, Arm Limited and Contributors. All rights reserved.
+ * Copyright (c) 2021-2022, Arm Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
@@ -42,11 +42,15 @@
{
attest_provision_client_deinit();
- service_context_close(m_attest_service_context, m_rpc_session_handle);
- m_rpc_session_handle = NULL;
+ if (m_attest_service_context) {
+ if (m_rpc_session_handle) {
+ service_context_close(m_attest_service_context, m_rpc_session_handle);
+ m_rpc_session_handle = NULL;
+ }
- service_context_relinquish(m_attest_service_context);
- m_attest_service_context = NULL;
+ service_context_relinquish(m_attest_service_context);
+ m_attest_service_context = NULL;
+ }
}
rpc_session_handle m_rpc_session_handle;
diff --git a/components/service/attestation/test/service/attestation_service_tests.cpp b/components/service/attestation/test/service/attestation_service_tests.cpp
index 9fe1f4d..f786035 100644
--- a/components/service/attestation/test/service/attestation_service_tests.cpp
+++ b/components/service/attestation/test/service/attestation_service_tests.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2021, Arm Limited and Contributors. All rights reserved.
+ * Copyright (c) 2021-2022, Arm Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
@@ -42,11 +42,15 @@
{
psa_iat_client_deinit();
- service_context_close(m_attest_service_context, m_rpc_session_handle);
- m_rpc_session_handle = NULL;
+ if (m_attest_service_context) {
+ if (m_rpc_session_handle) {
+ service_context_close(m_attest_service_context, m_rpc_session_handle);
+ m_rpc_session_handle = NULL;
+ }
- service_context_relinquish(m_attest_service_context);
- m_attest_service_context = NULL;
+ service_context_relinquish(m_attest_service_context);
+ m_attest_service_context = NULL;
+ }
}
rpc_session_handle m_rpc_session_handle;
diff --git a/components/service/crypto/test/service/crypto_service_limit_tests.cpp b/components/service/crypto/test/service/crypto_service_limit_tests.cpp
index c539b43..913fe77 100644
--- a/components/service/crypto/test/service/crypto_service_limit_tests.cpp
+++ b/components/service/crypto/test/service/crypto_service_limit_tests.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2020-2021, Arm Limited and Contributors. All rights reserved.
+ * Copyright (c) 2020-2022, Arm Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
@@ -44,11 +44,15 @@
delete m_crypto_client;
m_crypto_client = NULL;
- service_context_close(m_crypto_service_context, m_rpc_session_handle);
- m_rpc_session_handle = NULL;
+ if (m_crypto_service_context) {
+ if (m_rpc_session_handle) {
+ service_context_close(m_crypto_service_context, m_rpc_session_handle);
+ m_rpc_session_handle = NULL;
+ }
- service_context_relinquish(m_crypto_service_context);
- m_crypto_service_context = NULL;
+ service_context_relinquish(m_crypto_service_context);
+ m_crypto_service_context = NULL;
+ }
}
psa_status_t generateVolatileEccKeyPair(std::vector<psa_key_id_t> &key_ids)
diff --git a/components/service/crypto/test/service/extension/cipher/packed-c/cipher_service_packedc_tests.cpp b/components/service/crypto/test/service/extension/cipher/packed-c/cipher_service_packedc_tests.cpp
index d0e7f38..f9da7d8 100644
--- a/components/service/crypto/test/service/extension/cipher/packed-c/cipher_service_packedc_tests.cpp
+++ b/components/service/crypto/test/service/extension/cipher/packed-c/cipher_service_packedc_tests.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2021, Arm Limited and Contributors. All rights reserved.
+ * Copyright (c) 2021-2022, Arm Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
@@ -40,11 +40,15 @@
delete m_scenarios;
m_scenarios = NULL;
- service_context_close(m_crypto_service_context, m_rpc_session_handle);
- m_rpc_session_handle = NULL;
+ if (m_crypto_service_context) {
+ if (m_rpc_session_handle) {
+ service_context_close(m_crypto_service_context, m_rpc_session_handle);
+ m_rpc_session_handle = NULL;
+ }
- service_context_relinquish(m_crypto_service_context);
- m_crypto_service_context = NULL;
+ service_context_relinquish(m_crypto_service_context);
+ m_crypto_service_context = NULL;
+ }
}
rpc_session_handle m_rpc_session_handle;
diff --git a/components/service/crypto/test/service/extension/hash/packed-c/hash_service_packedc_tests.cpp b/components/service/crypto/test/service/extension/hash/packed-c/hash_service_packedc_tests.cpp
index 6bc55cf..060169a 100644
--- a/components/service/crypto/test/service/extension/hash/packed-c/hash_service_packedc_tests.cpp
+++ b/components/service/crypto/test/service/extension/hash/packed-c/hash_service_packedc_tests.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2021, Arm Limited and Contributors. All rights reserved.
+ * Copyright (c) 2021-2022, Arm Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
@@ -40,11 +40,15 @@
delete m_scenarios;
m_scenarios = NULL;
- service_context_close(m_crypto_service_context, m_rpc_session_handle);
- m_rpc_session_handle = NULL;
+ if (m_crypto_service_context) {
+ if (m_rpc_session_handle) {
+ service_context_close(m_crypto_service_context, m_rpc_session_handle);
+ m_rpc_session_handle = NULL;
+ }
- service_context_relinquish(m_crypto_service_context);
- m_crypto_service_context = NULL;
+ service_context_relinquish(m_crypto_service_context);
+ m_crypto_service_context = NULL;
+ }
}
rpc_session_handle m_rpc_session_handle;
diff --git a/components/service/crypto/test/service/extension/key_derivation/packed-c/key_derivation_service_packedc_tests.cpp b/components/service/crypto/test/service/extension/key_derivation/packed-c/key_derivation_service_packedc_tests.cpp
index 261bf98..c322437 100644
--- a/components/service/crypto/test/service/extension/key_derivation/packed-c/key_derivation_service_packedc_tests.cpp
+++ b/components/service/crypto/test/service/extension/key_derivation/packed-c/key_derivation_service_packedc_tests.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2021, Arm Limited and Contributors. All rights reserved.
+ * Copyright (c) 2021-2022, Arm Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
@@ -40,11 +40,15 @@
delete m_scenarios;
m_scenarios = NULL;
- service_context_close(m_crypto_service_context, m_rpc_session_handle);
- m_rpc_session_handle = NULL;
+ if (m_crypto_service_context) {
+ if (m_rpc_session_handle) {
+ service_context_close(m_crypto_service_context, m_rpc_session_handle);
+ m_rpc_session_handle = NULL;
+ }
- service_context_relinquish(m_crypto_service_context);
- m_crypto_service_context = NULL;
+ service_context_relinquish(m_crypto_service_context);
+ m_crypto_service_context = NULL;
+ }
}
rpc_session_handle m_rpc_session_handle;
diff --git a/components/service/crypto/test/service/extension/mac/packed-c/mac_service_packedc_tests.cpp b/components/service/crypto/test/service/extension/mac/packed-c/mac_service_packedc_tests.cpp
index 6ead054..d6c1c30 100644
--- a/components/service/crypto/test/service/extension/mac/packed-c/mac_service_packedc_tests.cpp
+++ b/components/service/crypto/test/service/extension/mac/packed-c/mac_service_packedc_tests.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2021, Arm Limited and Contributors. All rights reserved.
+ * Copyright (c) 2021-2022, Arm Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
@@ -40,11 +40,15 @@
delete m_scenarios;
m_scenarios = NULL;
- service_context_close(m_crypto_service_context, m_rpc_session_handle);
- m_rpc_session_handle = NULL;
+ if (m_crypto_service_context) {
+ if (m_rpc_session_handle) {
+ service_context_close(m_crypto_service_context, m_rpc_session_handle);
+ m_rpc_session_handle = NULL;
+ }
- service_context_relinquish(m_crypto_service_context);
- m_crypto_service_context = NULL;
+ service_context_relinquish(m_crypto_service_context);
+ m_crypto_service_context = NULL;
+ }
}
rpc_session_handle m_rpc_session_handle;
diff --git a/components/service/crypto/test/service/packed-c/crypto_service_packedc_tests.cpp b/components/service/crypto/test/service/packed-c/crypto_service_packedc_tests.cpp
index ea23843..a02d646 100644
--- a/components/service/crypto/test/service/packed-c/crypto_service_packedc_tests.cpp
+++ b/components/service/crypto/test/service/packed-c/crypto_service_packedc_tests.cpp
@@ -40,11 +40,15 @@
delete m_scenarios;
m_scenarios = NULL;
- service_context_close(m_crypto_service_context, m_rpc_session_handle);
- m_rpc_session_handle = NULL;
+ if (m_crypto_service_context) {
+ if (m_rpc_session_handle) {
+ service_context_close(m_crypto_service_context, m_rpc_session_handle);
+ m_rpc_session_handle = NULL;
+ }
- service_context_relinquish(m_crypto_service_context);
- m_crypto_service_context = NULL;
+ service_context_relinquish(m_crypto_service_context);
+ m_crypto_service_context = NULL;
+ }
}
rpc_session_handle m_rpc_session_handle;
diff --git a/components/service/crypto/test/service/protobuf/crypto_service_protobuf_tests.cpp b/components/service/crypto/test/service/protobuf/crypto_service_protobuf_tests.cpp
index c172ad4..885ebdc 100644
--- a/components/service/crypto/test/service/protobuf/crypto_service_protobuf_tests.cpp
+++ b/components/service/crypto/test/service/protobuf/crypto_service_protobuf_tests.cpp
@@ -40,11 +40,15 @@
delete m_scenarios;
m_scenarios = NULL;
- service_context_close(m_crypto_service_context, m_rpc_session_handle);
- m_rpc_session_handle = NULL;
+ if (m_crypto_service_context) {
+ if (m_rpc_session_handle) {
+ service_context_close(m_crypto_service_context, m_rpc_session_handle);
+ m_rpc_session_handle = NULL;
+ }
- service_context_relinquish(m_crypto_service_context);
- m_crypto_service_context = NULL;
+ service_context_relinquish(m_crypto_service_context);
+ m_crypto_service_context = NULL;
+ }
}
rpc_session_handle m_rpc_session_handle;
diff --git a/components/service/discovery/test/service/discovery_service_tests.cpp b/components/service/discovery/test/service/discovery_service_tests.cpp
index 654986e..eab0c20 100644
--- a/components/service/discovery/test/service/discovery_service_tests.cpp
+++ b/components/service/discovery/test/service/discovery_service_tests.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2021, Arm Limited and Contributors. All rights reserved.
+ * Copyright (c) 2021-2022, Arm Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
@@ -36,11 +36,15 @@
void teardown()
{
- service_context_close(m_service_context, m_rpc_session_handle);
- m_rpc_session_handle = NULL;
+ if (m_service_context) {
+ if (m_rpc_session_handle) {
+ service_context_close(m_service_context, m_rpc_session_handle);
+ m_rpc_session_handle = NULL;
+ }
- service_context_relinquish(m_service_context);
- m_service_context = NULL;
+ service_context_relinquish(m_service_context);
+ m_service_context = NULL;
+ }
}
struct rpc_caller *m_caller;
diff --git a/components/service/secure_storage/test/service/its_service_tests.cpp b/components/service/secure_storage/test/service/its_service_tests.cpp
index b976d61..8706a1e 100644
--- a/components/service/secure_storage/test/service/its_service_tests.cpp
+++ b/components/service/secure_storage/test/service/its_service_tests.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2021, Arm Limited and Contributors. All rights reserved.
+ * Copyright (c) 2021-2022, Arm Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
@@ -43,11 +43,15 @@
{
psa_its_frontend_init(NULL);
- service_context_close(m_its_service_context, m_rpc_session_handle);
- m_rpc_session_handle = NULL;
+ if (m_its_service_context) {
+ if (m_rpc_session_handle) {
+ service_context_close(m_its_service_context, m_rpc_session_handle);
+ m_rpc_session_handle = NULL;
+ }
- service_context_relinquish(m_its_service_context);
- m_its_service_context = NULL;
+ service_context_relinquish(m_its_service_context);
+ m_its_service_context = NULL;
+ }
secure_storage_client_deinit(&m_storage_client);
}
diff --git a/components/service/secure_storage/test/service/ps_service_tests.cpp b/components/service/secure_storage/test/service/ps_service_tests.cpp
index fd19f08..cdb8bb7 100644
--- a/components/service/secure_storage/test/service/ps_service_tests.cpp
+++ b/components/service/secure_storage/test/service/ps_service_tests.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2021, Arm Limited and Contributors. All rights reserved.
+ * Copyright (c) 2021-2022, Arm Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
@@ -47,11 +47,15 @@
psa_ps_frontend_init(NULL);
psa_its_frontend_init(NULL);
- service_context_close(m_its_service_context, m_rpc_session_handle);
- m_rpc_session_handle = NULL;
+ if (m_its_service_context) {
+ if (m_rpc_session_handle) {
+ service_context_close(m_its_service_context, m_rpc_session_handle);
+ m_rpc_session_handle = NULL;
+ }
- service_context_relinquish(m_its_service_context);
- m_its_service_context = NULL;
+ service_context_relinquish(m_its_service_context);
+ m_its_service_context = NULL;
+ }
secure_storage_client_deinit(&m_storage_client);
}
diff --git a/components/service/smm_variable/test/service/smm_variable_attack_tests.cpp b/components/service/smm_variable/test/service/smm_variable_attack_tests.cpp
index ce9aa3c..0a98a22 100644
--- a/components/service/smm_variable/test/service/smm_variable_attack_tests.cpp
+++ b/components/service/smm_variable/test/service/smm_variable_attack_tests.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2021, Arm Limited and Contributors. All rights reserved.
+ * Copyright (c) 2021-2022, Arm Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
@@ -44,11 +44,15 @@
delete m_client;
m_client = NULL;
- service_context_close(m_service_context, m_rpc_session_handle);
- m_rpc_session_handle = NULL;
+ if (m_service_context) {
+ if (m_rpc_session_handle) {
+ service_context_close(m_service_context, m_rpc_session_handle);
+ m_rpc_session_handle = NULL;
+ }
- service_context_relinquish(m_service_context);
- m_service_context = NULL;
+ service_context_relinquish(m_service_context);
+ m_service_context = NULL;
+ }
}
void setup_common_guid()
diff --git a/components/service/smm_variable/test/service/smm_variable_service_tests.cpp b/components/service/smm_variable/test/service/smm_variable_service_tests.cpp
index 4672b26..4108d51 100644
--- a/components/service/smm_variable/test/service/smm_variable_service_tests.cpp
+++ b/components/service/smm_variable/test/service/smm_variable_service_tests.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2021, Arm Limited and Contributors. All rights reserved.
+ * Copyright (c) 2021-2022, Arm Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
@@ -42,11 +42,15 @@
delete m_client;
m_client = NULL;
- service_context_close(m_service_context, m_rpc_session_handle);
- m_rpc_session_handle = NULL;
+ if (m_service_context) {
+ if (m_rpc_session_handle) {
+ service_context_close(m_service_context, m_rpc_session_handle);
+ m_rpc_session_handle = NULL;
+ }
- service_context_relinquish(m_service_context);
- m_service_context = NULL;
+ service_context_relinquish(m_service_context);
+ m_service_context = NULL;
+ }
}
void setup_common_guid()
diff --git a/components/service/test_runner/test/service/test_runner_service_tests.cpp b/components/service/test_runner/test/service/test_runner_service_tests.cpp
index 8d68bca..774465d 100644
--- a/components/service/test_runner/test/service/test_runner_service_tests.cpp
+++ b/components/service/test_runner/test/service/test_runner_service_tests.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2021, Arm Limited and Contributors. All rights reserved.
+ * Copyright (c) 2021-2022, Arm Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
@@ -45,11 +45,15 @@
delete m_test_runner_client;
m_test_runner_client = NULL;
- service_context_close(m_test_runner_service_context, m_rpc_session_handle);
- m_rpc_session_handle = NULL;
+ if (m_test_runner_service_context) {
+ if (m_rpc_session_handle) {
+ service_context_close(m_test_runner_service_context, m_rpc_session_handle);
+ m_rpc_session_handle = NULL;
+ }
- service_context_relinquish(m_test_runner_service_context);
- m_test_runner_service_context = NULL;
+ service_context_relinquish(m_test_runner_service_context);
+ m_test_runner_service_context = NULL;
+ }
}
rpc_session_handle m_rpc_session_handle;