From: Michael Tremer Date: Thu, 22 Jul 2021 20:15:14 +0000 (+0000) Subject: archive: Create struct to pass more data to signature checker X-Git-Tag: 0.9.28~1015 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5bf664c6c103aabac2c082ba6e1e538006cf7b42;p=pakfire.git archive: Create struct to pass more data to signature checker Signed-off-by: Michael Tremer --- diff --git a/src/libpakfire/archive.c b/src/libpakfire/archive.c index a240e2152..12d68290f 100644 --- a/src/libpakfire/archive.c +++ b/src/libpakfire/archive.c @@ -1435,6 +1435,10 @@ static int pakfire_archive_verify_checksums(struct pakfire_archive* archive, int return 0; } +struct pakfire_archive_signature_check { + gpgme_data_t checksums; +}; + /* This function is called to examine whether we have a signature and if so verify it */ @@ -1451,7 +1455,7 @@ static int pakfire_archive_verify_signature(struct pakfire_archive* archive, str if (!gpgctx) return 1; - gpgme_data_t* checksums = (gpgme_data_t*)data; + struct pakfire_archive_signature_check* check = (struct pakfire_archive_signature_check*)data; char* buffer = NULL; size_t size = 0; @@ -1472,7 +1476,7 @@ static int pakfire_archive_verify_signature(struct pakfire_archive* archive, str } // Perform verification - error = gpgme_op_verify(gpgctx, signature, *checksums, NULL); + error = gpgme_op_verify(gpgctx, signature, check->checksums, NULL); if (error != GPG_ERR_NO_ERROR) goto ERROR; @@ -1551,10 +1555,10 @@ static int pakfire_archive_verify_signatures(struct pakfire_archive* archive, return r; } - gpgme_data_t checksums; + struct pakfire_archive_signature_check check; // Convert checksums readable for GPGME - gpgme_error_t error = gpgme_data_new_from_mem(&checksums, buffer, size, 0); + gpgme_error_t error = gpgme_data_new_from_mem(&check.checksums, buffer, size, 0); if (error != GPG_ERR_NO_ERROR) { ERROR(archive->pakfire, "Could not initialize chksums: %s\n", gpgme_strerror(error)); r = 1; @@ -1565,10 +1569,10 @@ static int pakfire_archive_verify_signatures(struct pakfire_archive* archive, archive->verify = PAKFIRE_ARCHIVE_VERIFY_NOT_SIGNED; // Verify all signatures - r = pakfire_archive_walk(archive, pakfire_archive_verify_signature, 0, &checksums, NULL); + r = pakfire_archive_walk(archive, pakfire_archive_verify_signature, 0, &check, NULL); ERROR: - gpgme_data_release(checksums); + gpgme_data_release(check.checksums); if (buffer) free(buffer);