Skip to content

Commit cdf30ae

Browse files
romkuz01Michael Schwarcz
authored andcommitted
Change psa_get() to clear the requested signal
Remove positive get_msg_twice twice test since and add instead negative server_get_signum_twice test.
1 parent 07b78bd commit cdf30ae

File tree

6 files changed

+46
-78
lines changed

6 files changed

+46
-78
lines changed

TESTS/spm/neg_server_tests/neg_ipc_tests.cpp

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,14 @@ void server_get_signum_not_active()
115115
TEST_FAIL_MESSAGE("server_get_signum_not_active negative test failed at client side");
116116
}
117117

118+
//Testing server get signum flag twice
119+
void server_get_signum_twice()
120+
{
121+
psa_connect( PART2_GET_SIGNUM_TWICE, MINOR_VER);
122+
123+
TEST_FAIL_MESSAGE("server_get_signum_twice negative test failed at client side");
124+
}
125+
118126
//Testing server read handle does not exist on the platform
119127
void server_read_invalid_handle()
120128
{
@@ -323,6 +331,7 @@ PSA_NEG_TEST(server_get_msg_null)
323331
PSA_NEG_TEST(server_get_multiple_bit_signum)
324332
PSA_NEG_TEST(server_get_signum_not_subset)
325333
PSA_NEG_TEST(server_get_signum_not_active)
334+
PSA_NEG_TEST(server_get_signum_twice)
326335
PSA_NEG_TEST(server_read_invalid_handle)
327336
PSA_NEG_TEST(server_read_null_handle)
328337
PSA_NEG_TEST(server_write_null_buffer)
@@ -342,8 +351,6 @@ PSA_NEG_TEST(server_read_from_excese_invec)
342351
PSA_NEG_TEST(server_write_on_wraparound_msg_ptr)
343352
PSA_NEG_TEST(server_write_from_excese_outvec)
344353

345-
346-
347354
utest::v1::status_t spm_case_setup(const Case *const source, const size_t index_of_case)
348355
{
349356
memset(response_buf, 0, sizeof(response_buf));
@@ -366,6 +373,7 @@ Case cases[] = {
366373
SPM_UTEST_CASE("Testing server get signum have more than one bit ON", server_get_multiple_bit_signum),
367374
SPM_UTEST_CASE("Testing server get signum flag is not a subset of current partition flags", server_get_signum_not_subset),
368375
SPM_UTEST_CASE("Testing server get signum flag is not active", server_get_signum_not_active),
376+
SPM_UTEST_CASE("Testing server get signum twice", server_get_signum_twice),
369377
SPM_UTEST_CASE("Testing server read handle does not exist on the platform", server_read_invalid_handle),
370378
SPM_UTEST_CASE("Testing server read handle is PSA_NULL_HANDLE", server_read_null_handle),
371379
SPM_UTEST_CASE("Testing server write buffer is NULL", server_write_null_buffer),

TESTS/spm/neg_server_tests/part2_psa.json

Lines changed: 27 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -47,152 +47,160 @@
4747
"minor_policy": "relaxed"
4848
},
4949
{
50-
"name": "PART2_READ_INVALID_HANDLE",
50+
"name": "PART2_GET_SIGNUM_TWICE",
5151
"identifier": "0x00001A10",
52+
"signal": "PART2_GET_SIGNUM_TWICE_MSK",
53+
"non_secure_clients": true,
54+
"minor_version": 5,
55+
"minor_policy": "relaxed"
56+
},
57+
{
58+
"name": "PART2_READ_INVALID_HANDLE",
59+
"identifier": "0x00001A11",
5260
"signal": "PART2_READ_INVALID_HANDLE_MSK",
5361
"non_secure_clients": true,
5462
"minor_version": 5,
5563
"minor_policy": "relaxed"
5664
},
5765
{
5866
"name": "PART2_READ_NULL_HANDLE",
59-
"identifier": "0x00001A11",
67+
"identifier": "0x00001A12",
6068
"signal": "PART2_READ_NULL_HANDLE_MSK",
6169
"non_secure_clients": true,
6270
"minor_version": 5,
6371
"minor_policy": "relaxed"
6472
},
6573
{
6674
"name": "PART2_READ_TX_SIZE_ZERO",
67-
"identifier": "0x00001A12",
75+
"identifier": "0x00001A13",
6876
"signal": "PART2_READ_TX_SIZE_ZERO_MSK",
6977
"non_secure_clients": true,
7078
"minor_version": 5,
7179
"minor_policy": "relaxed"
7280
},
7381
{
7482
"name": "PART2_WRITE_BUFFER_NULL",
75-
"identifier": "0x00001A13",
83+
"identifier": "0x00001A14",
7684
"signal": "PART2_WRITE_BUFFER_NULL_MSK",
7785
"non_secure_clients": true,
7886
"minor_version": 5,
7987
"minor_policy": "relaxed"
8088
},
8189
{
8290
"name": "PART2_WRITE_RX_BUFF_NULL",
83-
"identifier": "0x00001A14",
91+
"identifier": "0x00001A15",
8492
"signal": "PART2_WRITE_RX_BUFF_NULL_MSK",
8593
"non_secure_clients": true,
8694
"minor_version": 5,
8795
"minor_policy": "relaxed"
8896
},
8997
{
9098
"name": "PART2_WRITE_INVALID_HANDLE",
91-
"identifier": "0x00001A15",
99+
"identifier": "0x00001A16",
92100
"signal": "PART2_WRITE_INVALID_HANDLE_MSK",
93101
"non_secure_clients": true,
94102
"minor_version": 5,
95103
"minor_policy": "relaxed"
96104
},
97105
{
98106
"name": "PART2_WRITE_NULL_HANDLE",
99-
"identifier": "0x00001A16",
107+
"identifier": "0x00001A17",
100108
"signal": "PART2_WRITE_NULL_HANDLE_MSK",
101109
"non_secure_clients": true,
102110
"minor_version": 5,
103111
"minor_policy": "relaxed"
104112
},
105113
{
106114
"name": "PART2_END_INVALID_HANDLE",
107-
"identifier": "0x00001A17",
115+
"identifier": "0x00001A18",
108116
"signal": "PART2_END_INVALID_HANDLE_MSK",
109117
"non_secure_clients": true,
110118
"minor_version": 5,
111119
"minor_policy": "relaxed"
112120
},
113121
{
114122
"name": "PART2_END_NULL_HANDLE",
115-
"identifier": "0x00001A18",
123+
"identifier": "0x00001A19",
116124
"signal": "PART2_END_NULL_HANDLE_MSK",
117125
"non_secure_clients": true,
118126
"minor_version": 5,
119127
"minor_policy": "relaxed"
120128
},
121129
{
122130
"name": "PART2_SET_RHANDLE_INVALID",
123-
"identifier": "0x00001A19",
131+
"identifier": "0x00001A1A",
124132
"signal": "PART2_SET_RHANDLE_INVALID_MSK",
125133
"non_secure_clients": true,
126134
"minor_version": 5,
127135
"minor_policy": "relaxed"
128136
},
129137
{
130138
"name": "PART2_NOTIFY_PART_ID_INVALID",
131-
"identifier": "0x00001A1A",
139+
"identifier": "0x00001A1B",
132140
"signal": "PART2_NOTIFY_PART_ID_INVALID_MSK",
133141
"non_secure_clients": true,
134142
"minor_version": 5,
135143
"minor_policy": "relaxed"
136144
},
137145
{
138146
"name": "PART2_IDENTITY_INVALID_HANDLE",
139-
"identifier": "0x00001A1B",
147+
"identifier": "0x00001A1C",
140148
"signal": "PART2_IDENTITY_INVALID_HANDLE_MSK",
141149
"non_secure_clients": true,
142150
"minor_version": 5,
143151
"minor_policy": "relaxed"
144152
},
145153
{
146154
"name": "PART2_IDENTITY_NULL_HANDLE",
147-
"identifier": "0x00001A1C",
155+
"identifier": "0x00001A1D",
148156
"signal": "PART2_IDENTITY_NULL_HANDLE_MSK",
149157
"non_secure_clients": true,
150158
"minor_version": 5,
151159
"minor_policy": "relaxed"
152160
},
153161
{
154162
"name": "PART2_SET_RHANDLE_INVALID_HANDLE",
155-
"identifier": "0x00001A1D",
163+
"identifier": "0x00001A1E",
156164
"signal": "PART2_SET_RHANDLE_INVALID_HANDLE_MSK",
157165
"non_secure_clients": true,
158166
"minor_version": 5,
159167
"minor_policy": "relaxed"
160168
},
161169
{
162170
"name": "PART2_SET_RHANDLE_NULL_HANDLE",
163-
"identifier": "0x00001A1E",
171+
"identifier": "0x00001A1F",
164172
"signal": "PART2_SET_RHANDLE_NULL_HANDLE_MSK",
165173
"non_secure_clients": true,
166174
"minor_version": 5,
167175
"minor_policy": "relaxed"
168176
},
169177
{
170178
"name": "PART2_READ_WRAPAROUND",
171-
"identifier": "0x00001A1F",
179+
"identifier": "0x00001A20",
172180
"signal": "PART2_READ_WRAPAROUND_MSK",
173181
"non_secure_clients": true,
174182
"minor_version": 5,
175183
"minor_policy": "relaxed"
176184
},
177185
{
178186
"name": "PART2_READ_EXCESE_INVEC",
179-
"identifier": "0x00001A20",
187+
"identifier": "0x00001A21",
180188
"signal": "PART2_READ_EXCESE_INVEC_MSK",
181189
"non_secure_clients": true,
182190
"minor_version": 5,
183191
"minor_policy": "relaxed"
184192
},
185193
{
186194
"name": "PART2_WRITE_WRAPAROUND",
187-
"identifier": "0x00001A21",
195+
"identifier": "0x00001A22",
188196
"signal": "PART2_WRITE_WRAPAROUND_MSK",
189197
"non_secure_clients": true,
190198
"minor_version": 5,
191199
"minor_policy": "relaxed"
192200
},
193201
{
194202
"name": "PART2_WRITE_EXCESE_OUTVEC",
195-
"identifier": "0x00001A22",
203+
"identifier": "0x00001A23",
196204
"signal": "PART2_WRITE_EXCESE_OUTVEC_MSK",
197205
"non_secure_clients": true,
198206
"minor_version": 5,

TESTS/spm/neg_server_tests/server2.c

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,11 @@ void server_main2(void *ptr)
6161
psa_get(PART2_GET_MSG_NULL_MSK, &msg); //send wrong flag
6262
TEST_FAIL_MESSAGE("server_get_signum_not_active negative test failed");
6363
}
64+
else if (signals & PART2_GET_SIGNUM_TWICE_MSK) {
65+
psa_get(PART2_GET_SIGNUM_TWICE_MSK, &msg);
66+
psa_get(PART2_GET_SIGNUM_TWICE_MSK, &msg);
67+
TEST_FAIL_MESSAGE("server_get_signum_twice negative test failed");
68+
}
6469
else if (signals & PART2_READ_INVALID_HANDLE_MSK) {
6570
psa_get(PART2_READ_INVALID_HANDLE_MSK, &msg);
6671
switch (msg.type) {

TESTS/spm/server/main.cpp

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -83,19 +83,6 @@ PSA_TEST_CLIENT(identity_during_close)
8383
TEST_ASSERT_EQUAL(PSA_SUCCESS, status);
8484
}
8585

86-
PSA_TEST_CLIENT(get_msg_twice)
87-
{
88-
psa_error_t status = PSA_SUCCESS;
89-
psa_handle_t test_handle = psa_connect(TEST, TEST_SF_MINOR);
90-
TEST_ASSERT(test_handle > 0);
91-
92-
status = psa_call(test_handle, NULL, 0, NULL, 0);
93-
TEST_ASSERT_EQUAL(PSA_SUCCESS, status);
94-
95-
status = psa_close(test_handle);
96-
TEST_ASSERT_EQUAL(PSA_SUCCESS, status);
97-
}
98-
9986
PSA_TEST_CLIENT(msg_size_assertion)
10087
{
10188
psa_error_t status = PSA_SUCCESS;
@@ -299,7 +286,6 @@ Case cases[] = {
299286
SPM_UTEST_CASE("Get identity during connect", identity_during_connect),
300287
SPM_UTEST_CASE("Get identity during call", identity_during_call),
301288
SPM_UTEST_CASE("Get identity during disconnect", identity_during_close),
302-
SPM_UTEST_CASE("Read message twice and compare", get_msg_twice),
303289
SPM_UTEST_CASE("Assert msg size", msg_size_assertion),
304290
SPM_UTEST_CASE("Reject on connect", reject_connection),
305291
SPM_UTEST_CASE("Read at an out of bound offset", read_at_outofboud_offset),

TESTS/spm/server/tests.c

Lines changed: 0 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -189,44 +189,6 @@ PSA_TEST_SERVER(identity_during_close)
189189
return test_status;
190190
}
191191

192-
PSA_TEST_SERVER(get_msg_twice) //NO OUTPUT
193-
{
194-
psa_error_t test_status = PSA_SUCCESS;
195-
psa_error_t disconnect_status = PSA_SUCCESS;
196-
psa_msg_t msg1 = {0};
197-
psa_msg_t msg2 = {0};
198-
uint32_t signals = 0;
199-
200-
test_status = proccess_connect_request();
201-
if (test_status != PSA_SUCCESS) {
202-
return test_status;
203-
}
204-
205-
signals = psa_wait_any(PSA_WAIT_BLOCK);
206-
if ((signals & TEST_MSK) == 0) {
207-
test_status = PSA_GENERIC_ERROR;
208-
}
209-
210-
psa_get(TEST_MSK, &msg1);
211-
if (msg1.type != PSA_IPC_MSG_TYPE_CALL) {
212-
test_status = ((test_status != PSA_SUCCESS) ? test_status : PSA_GENERIC_ERROR);
213-
}
214-
215-
psa_get(TEST_MSK, &msg2);
216-
if (msg2.type != PSA_IPC_MSG_TYPE_CALL) {
217-
test_status = ((test_status != PSA_SUCCESS) ? test_status : PSA_GENERIC_ERROR);
218-
}
219-
220-
*status_ptr = (memcmp(&msg1, &msg2, sizeof(msg1)) == 0) ? PSA_SUCCESS : PSA_GENERIC_ERROR;
221-
222-
psa_end(msg1.handle, PSA_SUCCESS);
223-
224-
disconnect_status = proccess_disconnect_request();
225-
test_status = (test_status != PSA_SUCCESS) ? test_status : disconnect_status;
226-
227-
return test_status;
228-
}
229-
230192
PSA_TEST_SERVER(msg_size_assertion)
231193
{
232194
psa_error_t test_status = PSA_SUCCESS;
@@ -745,7 +707,6 @@ psa_test_server_side_func test_list[] = {
745707
PSA_TEST_SERVER_NAME(identity_during_connect),
746708
PSA_TEST_SERVER_NAME(identity_during_call),
747709
PSA_TEST_SERVER_NAME(identity_during_close),
748-
PSA_TEST_SERVER_NAME(get_msg_twice),
749710
PSA_TEST_SERVER_NAME(msg_size_assertion),
750711
PSA_TEST_SERVER_NAME(reject_connection),
751712
PSA_TEST_SERVER_NAME(read_at_outofboud_offset),

spm/spm_server.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,10 @@ void psa_get(psa_signal_t signum, psa_msg_t *msg)
135135
SPM_PANIC("flag is not active!\n");
136136
}
137137

138+
int32_t flags = (int32_t)osThreadFlagsClear(signum);
139+
SPM_ASSERT(flags >= 0);
140+
PSA_UNUSED(flags);
141+
138142
active_msg_t *active_msg = &(curr_partition->active_msg);
139143
SPM_ASSERT((active_msg->type > PSA_IPC_MSG_TYPE_INVALID) &&
140144
(active_msg->type <= PSA_IPC_MSG_TYPE_MAX));
@@ -277,10 +281,6 @@ void psa_end(psa_handle_t msg_handle, psa_error_t retval)
277281
spm_msg_handle_destroy(curr_partition->msg_handle);
278282
curr_partition->msg_handle = PSA_NULL_HANDLE;
279283

280-
int32_t flags = (int32_t)osThreadFlagsClear(dst_sec_func->mask);
281-
SPM_ASSERT(flags >= 0);
282-
PSA_UNUSED(flags);
283-
284284
osStatus_t os_status = osSemaphoreRelease(dst_sec_func->partition->semaphore);
285285
SPM_ASSERT(osOK == os_status);
286286
PSA_UNUSED(os_status);

0 commit comments

Comments
 (0)