diff options
Diffstat (limited to 'lib/libalpm/signing.c')
-rw-r--r-- | lib/libalpm/signing.c | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/lib/libalpm/signing.c b/lib/libalpm/signing.c index b7587d1c..cf93fa2b 100644 --- a/lib/libalpm/signing.c +++ b/lib/libalpm/signing.c @@ -543,11 +543,30 @@ int _alpm_gpgme_checksig(alpm_handle_t *handle, const char *path, memset(&sigdata, 0, sizeof(sigdata)); memset(&filedata, 0, sizeof(filedata)); + char* filecontent; + struct stat statbuf; + + // TODO check return code + stat(path, &statbuf); + + size_t filesize = statbuf.st_size; + + filecontent = malloc(filesize); + if (filecontent == NULL) { + printf("Failed to allocate memory\n"); + goto error; + } + + if (fread(filecontent, filesize, 1, file) != 1) { + // TODO error handling + } + gpg_err = gpgme_new(&ctx); CHECK_ERR(); /* create our necessary data objects to verify the signature */ - gpg_err = gpgme_data_new_from_stream(&filedata, file); + //gpg_err = gpgme_data_new_from_stream(&filedata, file); + gpg_err = gpgme_data_new_from_mem(&filedata, filecontent, filesize, 1); CHECK_ERR(); /* next create data object for the signature */ |