[pacman-dev] [PATCH] check if keyring is readable
Florian Pritz
bluewind at xinu.at
Tue Jul 5 09:35:18 EDT 2011
If we can't read the keyring, gpgme will output confusing debug
information and fail to verify the signature, so we should warn the user before.
Signed-off-by: Florian Pritz <bluewind at xinu.at>
---
lib/libalpm/signing.c | 17 +++++++++++++++++
1 files changed, 17 insertions(+), 0 deletions(-)
diff --git a/lib/libalpm/signing.c b/lib/libalpm/signing.c
index 1ac9963..19d3454 100644
--- a/lib/libalpm/signing.c
+++ b/lib/libalpm/signing.c
@@ -110,6 +110,8 @@ static int init_gpgme(alpm_handle_t *handle)
const char *version, *sigdir;
gpgme_error_t err;
gpgme_engine_info_t enginfo;
+ const char *needed_files[] = {"secring.gpg", "trustdb.gpg", "gpg.conf", NULL};
+ int i = 0;
if(init) {
/* we already successfully initialized the library */
@@ -121,6 +123,21 @@ static int init_gpgme(alpm_handle_t *handle)
RET_ERR(handle, ALPM_ERR_SIG_MISSINGDIR, 1);
}
+ i = 0;
+ while (needed_files[i] != NULL) {
+ char *check_path = NULL;
+ size_t len = strlen(sigdir) + strlen(needed_files[i]) + 1;
+
+ CALLOC(check_path, len, sizeof(char), RET_ERR(handle, ALPM_ERR_MEMORY, -1));
+ snprintf(check_path, len, "%s%s", sigdir, needed_files[i]);
+
+ if(access(check_path, R_OK) != 0) {
+ _alpm_log(handle, ALPM_LOG_WARNING, _("\"%s\" not readable. Signature verification will likely fail!\n"), check_path);
+ }
+ i++;
+ }
+
+
/* calling gpgme_check_version() returns the current version and runs
* some internal library setup code */
version = gpgme_check_version(NULL);
--
1.7.6
More information about the pacman-dev
mailing list