Commit 00e51ca3 authored by Paul Beesley's avatar Paul Beesley
Browse files

services/spm: Fix service UUID lookup



The spm_sp_get_by_uuid() function is used to look up the secure
partition that provides a given service.

Within this function, memcmp() is used to compare the service
UUIDs but it uses the size of the rdsvc->uuid pointer instead of
the size of its content (missing dereference). This means that only
a partial comparison is performed as UUIDs are 128 bits in length and
rdsvc->uuid is a uint32_t typed pointer.

Instead, use the size of the array pointed to by the svc_uuid parameter,
which will be the full 128 bits, for the comparison.

Change-Id: I258fb0cca3bf19f97b8f2a4c133981647cd050e4
Signed-off-by: default avatarPaul Beesley <paul.beesley@arm.com>
parent 01e7e0ca
...@@ -104,7 +104,7 @@ sp_context_t *spm_sp_get_by_uuid(const uint32_t (*svc_uuid)[4]) ...@@ -104,7 +104,7 @@ sp_context_t *spm_sp_get_by_uuid(const uint32_t (*svc_uuid)[4])
rdsvc = rdsvc->next) { rdsvc = rdsvc->next) {
uint32_t *rd_uuid = (uint32_t *)(rdsvc->uuid); uint32_t *rd_uuid = (uint32_t *)(rdsvc->uuid);
if (memcmp(rd_uuid, svc_uuid, sizeof(rd_uuid)) == 0) { if (memcmp(rd_uuid, svc_uuid, sizeof(*svc_uuid)) == 0) {
return sp_ctx; return sp_ctx;
} }
} }
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment