From: Lennart Poettering Date: Mon, 15 Jan 2024 16:33:59 +0000 (+0100) Subject: creds-util: simplify offset calculation a bit X-Git-Tag: v256-rc1~1143^2~1 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=cdbcb1fe6e7ab5ec001b81d99f6e2ae2f94e9604;p=thirdparty%2Fsystemd.git creds-util: simplify offset calculation a bit Don't recalculate the overall offset entirely each time we process another header. Instead, if we already validated an earlier offset, just reuse the result, it's readily available in 'p'. No change in behaviour, just a bit of code simplification. --- diff --git a/src/shared/creds-util.c b/src/shared/creds-util.c index 434907c9986..3514902c68b 100644 --- a/src/shared/creds-util.c +++ b/src/shared/creds-util.c @@ -1170,7 +1170,7 @@ int decrypt_credential_and_warn( /* Ensure we have space for the full TPM2 header now (still don't know the name, and its size * though, hence still just a lower limit test only) */ if (input->iov_len < - ALIGN8(offsetof(struct encrypted_credential_header, iv) + le32toh(h->iv_size)) + + p + ALIGN8(offsetof(struct tpm2_credential_header, policy_hash_and_blob) + le32toh(t->blob_size) + le32toh(t->policy_hash_size)) + ALIGN8(with_tpm2_pk ? offsetof(struct tpm2_public_key_credential_header, data) : 0) + ALIGN8(offsetof(struct metadata_credential_header, name)) + @@ -1190,8 +1190,7 @@ int decrypt_credential_and_warn( return log_error_errno(SYNTHETIC_ERRNO(EBADMSG), "Unexpected public key size."); if (input->iov_len < - ALIGN8(offsetof(struct encrypted_credential_header, iv) + le32toh(h->iv_size)) + - ALIGN8(offsetof(struct tpm2_credential_header, policy_hash_and_blob) + le32toh(t->blob_size) + le32toh(t->policy_hash_size)) + + p + ALIGN8(offsetof(struct tpm2_public_key_credential_header, data) + le32toh(z->size)) + ALIGN8(offsetof(struct metadata_credential_header, name)) + le32toh(h->tag_size))