Merge pull request #3340 from smcv/issue3339

composefs: Ensure buffer is suitably aligned for struct fsverity_digest
This commit is contained in:
Colin Walters 2024-11-14 16:49:32 -07:00 committed by GitHub
commit 111a45fa5c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -327,19 +327,22 @@ checkout_one_composefs_file_at (OstreeRepo *repo, OtTristate verity, const char
* This is the typical case when we're pulled into the target
* system repo with verity on and are recreating the composefs
* image during deploy. */
char buf[sizeof (struct fsverity_digest) + OSTREE_SHA256_DIGEST_LEN];
union
{
struct fsverity_digest d;
char buf[sizeof (struct fsverity_digest) + OSTREE_SHA256_DIGEST_LEN];
} result;
guchar *known_digest = NULL;
if (G_IS_UNIX_INPUT_STREAM (input))
{
int content_fd = g_unix_input_stream_get_fd (G_UNIX_INPUT_STREAM (input));
struct fsverity_digest *d = (struct fsverity_digest *)&buf;
d->digest_size = OSTREE_SHA256_DIGEST_LEN;
result.d.digest_size = OSTREE_SHA256_DIGEST_LEN;
if (ioctl (content_fd, FS_IOC_MEASURE_VERITY, d) == 0
&& d->digest_size == OSTREE_SHA256_DIGEST_LEN
&& d->digest_algorithm == FS_VERITY_HASH_ALG_SHA256)
known_digest = d->digest;
if (ioctl (content_fd, FS_IOC_MEASURE_VERITY, &result) == 0
&& result.d.digest_size == OSTREE_SHA256_DIGEST_LEN
&& result.d.digest_algorithm == FS_VERITY_HASH_ALG_SHA256)
known_digest = result.d.digest;
}
#endif