• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2022 Huawei Technologies Co., Ltd.
3  * Licensed under the Mulan PSL v2.
4  * You can use this software according to the terms and conditions of the Mulan PSL v2.
5  * You may obtain a copy of Mulan PSL v2 at:
6  * http://license.coscl.org.cn/MulanPSL2
7  * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR
8  * IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR
9  * PURPOSE.
10  * See the Mulan PSL v2 for more details.
11  */
12 
13 #include <common_test.h>
14 #include <gtest/gtest.h>
15 #include <securec.h>
16 #include <tee_client_api.h>
17 #include <tee_client_type.h>
18 #include <test_defines.h>
19 #include <test_log.h>
20 #include <test_tcf_cmdid.h>
21 
22 using namespace testing::ext;
23 /**
24  * @testcase.name      : TEE_MemFill_With_Success
25  * @testcase.desc      : test TA call TEE_MemFill to fill buffer with char assigned in TA
26  * @testcase.expect    : return TEEC_SUCCESS, buffer is filled match expect
27  */
28 TEE_TEST(TeeTCF2Test, TEE_MemFill_With_Success, Function | MediumTest | Level0)
29 {
30     TEEC_Result ret;
31     TestMemData value = { 0 };
32     char outBuf[TESTSIZE + 1] = { 0 };
33 
34     value.oldSize = TESTSIZE;
35     ret = Invoke_MemMove_Or_Fill(GetSession(), CMD_TEE_MemFill, &value, outBuf);
36     ASSERT_EQ(ret, TEEC_SUCCESS);
37     ASSERT_EQ(value.origin, TEEC_ORIGIN_TRUSTED_APP);
38     ASSERT_STREQ(outBuf, EXPECTBUFFER_A);
39 }
40 
41 /**
42  * @testcase.name      : TEE_MemFill_With_BufferIsNull
43  * @testcase.desc      : test TA call TEE_MemFill  while buffer is null
44  * @testcase.expect    : return TEEC_SUCCESS, buffer is not filled and is 0
45  */
46 TEE_TEST(TeeTCF2Test, TEE_MemFill_With_BufferIsNull, Function | MediumTest | Level0)
47 {
48     TEEC_Result ret;
49     TestMemData value = { 0 };
50     char outBuf[TESTSIZE] = { 0 };
51     uint32_t i;
52 
53     value.oldSize = TESTSIZE;
54     value.caseId = INPUT_ISNULL;
55     ret = Invoke_MemMove_Or_Fill(GetSession(), CMD_TEE_MemFill, &value, outBuf);
56     ASSERT_EQ(ret, TEEC_SUCCESS);
57     ASSERT_EQ(value.origin, TEEC_ORIGIN_TRUSTED_APP);
58     for (i = 0; i < TESTSIZE; i++) {
59         ASSERT_EQ(outBuf[i], 0);
60     }
61 }
62 
63 /**
64  * @testcase.name      : TEE_MemFill_With_SizeIsZero
65  * @testcase.desc      : test TA call TEE_MemFill while size is zero
66  * @testcase.expect    : return TEEC_SUCCESS, buffer is not filled and is 0
67  */
68 TEE_TEST(TeeTCF2Test, TEE_MemFill_With_SizeIsZero, Function | MediumTest | Level0)
69 {
70     TEEC_Result ret;
71     TestMemData value = { 0 };
72     char outBuf[TESTSIZE] = { 0 };
73     uint32_t i;
74 
75     value.oldSize = TESTSIZE;
76     value.caseId = OUTPUTBUFFERSIZE_ISZERO;
77     ret = Invoke_MemMove_Or_Fill(GetSession(), CMD_TEE_MemFill, &value, outBuf);
78     ASSERT_EQ(ret, TEEC_SUCCESS);
79     ASSERT_EQ(value.origin, TEEC_ORIGIN_TRUSTED_APP);
80     for (i = 0; i < TESTSIZE; i++) {
81         ASSERT_EQ(outBuf[i], 0);
82     }
83 }