]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
creds-util: simplify offset calculation a bit
authorLennart Poettering <lennart@poettering.net>
Mon, 15 Jan 2024 16:33:59 +0000 (17:33 +0100)
committerLennart Poettering <lennart@poettering.net>
Tue, 16 Jan 2024 13:16:18 +0000 (14:16 +0100)
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.

src/shared/creds-util.c

index 434907c9986b9eb18ec8a48d966a73644f808e5b..3514902c68b30f452719333f825ee0831e6d0ea2 100644 (file)
@@ -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))