From beb6bd80cd1463d4569a332c581ad57cecc9ede8 Mon Sep 17 00:00:00 2001 From: morganamilo Date: Fri, 1 Aug 2025 04:09:26 +0100 Subject: [PATCH] libalpm: set errno when key is missing from keyring There was no fitting error type for this so add ALPM_ERR_KEY_MISSING. --- lib/libalpm/alpm.h | 2 ++ lib/libalpm/be_package.c | 1 + lib/libalpm/error.c | 2 ++ lib/libalpm/sync.c | 1 + 4 files changed, 6 insertions(+) diff --git a/lib/libalpm/alpm.h b/lib/libalpm/alpm.h index 96e5e643..ee967dbb 100644 --- a/lib/libalpm/alpm.h +++ b/lib/libalpm/alpm.h @@ -300,6 +300,8 @@ typedef enum _alpm_errno_t { ALPM_ERR_SIG_MISSING, /** Signatures are invalid */ ALPM_ERR_SIG_INVALID, + /** Keys are missing from keyring */ + ALPM_ERR_KEY_MISSING, /* Dependencies */ /** Dependencies could not be satisfied */ ALPM_ERR_UNSATISFIED_DEPS, diff --git a/lib/libalpm/be_package.c b/lib/libalpm/be_package.c index 0fecbcb5..a7ceb8a2 100644 --- a/lib/libalpm/be_package.c +++ b/lib/libalpm/be_package.c @@ -766,6 +766,7 @@ int SYMEXPORT alpm_pkg_load(alpm_handle_t *handle, const char *filename, int ful if(fail) { _alpm_log(handle, ALPM_LOG_ERROR, _("required key missing from keyring\n")); + handle->pm_errno = ALPM_ERR_KEY_MISSING; free(sigpath); return -1; } diff --git a/lib/libalpm/error.c b/lib/libalpm/error.c index 58842eac..e59bdb5f 100644 --- a/lib/libalpm/error.c +++ b/lib/libalpm/error.c @@ -130,6 +130,8 @@ const char SYMEXPORT *alpm_strerror(alpm_errno_t err) return _("missing PGP signature"); case ALPM_ERR_SIG_INVALID: return _("invalid PGP signature"); + case ALPM_ERR_KEY_MISSING: + return _("PGP key missing from keyring"); /* Dependencies */ case ALPM_ERR_UNSATISFIED_DEPS: return _("could not satisfy dependencies"); diff --git a/lib/libalpm/sync.c b/lib/libalpm/sync.c index 087c48de..63f5d500 100644 --- a/lib/libalpm/sync.c +++ b/lib/libalpm/sync.c @@ -975,6 +975,7 @@ static int check_keyring(alpm_handle_t *handle) EVENT(handle, &event); if(fail) { _alpm_log(handle, ALPM_LOG_ERROR, _("required key missing from keyring\n")); + handle->pm_errno = ALPM_ERR_KEY_MISSING; return -1; } }