Skip to content

Commit 2ac0adc

Browse files
tomchynordicjm
authored andcommitted
ssf: Sanitize returned digest pointer
Handle cases, in which SDFW responds with NULL as manifest digest value. Ref: NCSDK-NONE Signed-off-by: Tomasz Chyrowicz <[email protected]>
1 parent e6753aa commit 2ac0adc

File tree

1 file changed

+10
-4
lines changed

1 file changed

+10
-4
lines changed

subsys/sdfw_services/services/suit_service/suit_update.c

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -185,16 +185,22 @@ suit_ssf_err_t suit_get_installed_manifest_info(suit_manifest_class_id_t *manife
185185
if ((alg_id != NULL) && (digest != NULL)) {
186186
const size_t manifest_digest_len =
187187
rsp_data->SSF_SUIT_RSP_ARG(get_installed_manifest_info, digest).len;
188+
const uint8_t *manifest_digest =
189+
rsp_data->SSF_SUIT_RSP_ARG(get_installed_manifest_info, digest).value;
190+
188191
if (manifest_digest_len > digest->size) {
189192
ssf_client_decode_done(rsp_pkt);
190193
return SUIT_PLAT_ERR_NOMEM;
191194
}
192195

193196
*alg_id = rsp_data->SSF_SUIT_RSP_ARG(get_installed_manifest_info, alg_id);
194-
memcpy((uint8_t *)digest->mem,
195-
rsp_data->SSF_SUIT_RSP_ARG(get_installed_manifest_info, digest).value,
196-
manifest_digest_len);
197-
digest->size = manifest_digest_len;
197+
if (manifest_digest != NULL) {
198+
memcpy((uint8_t *)digest->mem, manifest_digest, manifest_digest_len);
199+
digest->size = manifest_digest_len;
200+
} else {
201+
digest->mem = NULL;
202+
digest->size = 0;
203+
}
198204
}
199205

200206
ssf_client_decode_done(rsp_pkt);

0 commit comments

Comments
 (0)