]> git.ipfire.org Git - pakfire.git/commitdiff
archive: Create struct to pass more data to signature checker
authorMichael Tremer <michael.tremer@ipfire.org>
Thu, 22 Jul 2021 20:15:14 +0000 (20:15 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Thu, 22 Jul 2021 20:15:14 +0000 (20:15 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/libpakfire/archive.c

index a240e215277a8fcb8a3111013a6255b6aa951bcb..12d68290fed3dedd7c25fd7dea70b51ecc67fbfd 100644 (file)
@@ -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);