[pacman-dev] [PATCH] Report which package is missing a signature

Ashley Whetter awhetter.2011 at my.bristol.ac.uk
Sun Jul 21 08:33:47 EDT 2013


On 21 July 2013 11:09, Allan McRae <allan at archlinux.org> wrote:

> If any package in a sync transaction is missing a required signature,
> we give an uninformative error message (which may or may not state that
> the missing signature is the issue).  Always output the package with
> the missing signature.
>
> Signed-off-by: Allan McRae <allan at archlinux.org>
> ---
>
> There are still output errors here...
>
> When there is a single package in a transaction and it has a missing
> required signature issue we output:
> error: failed to commit transaction (package missing required signature)
>
> If there are multiple packages in a transaction and one is missing a
> required signature, we could output either:
> error: failed to commit transaction (package missing required signature)
> or
> error: failed to commit transaction (invalid or corrupted package (PGP
> signature))
>
>
I think "package missing required signature" makes sense for multiple
packages because it's consistent with a single package transaction (unless
we were to change that as well). Plus I think it reads more nicely.


> When there is a mixture of missing signatures and corrupt packages, we
> can out put either error message. (I guess technically both are correct!)
>

Neither message is great. "invalid or corrupted package (PGP signature)"
implies only the signature is incorrect, but really we need to make it
clear that both things are wrong.


>
> However, with this change we will easily be able to identify all corrupt
> packages and all packages with missing signatures.
>
>
> And this finished my quest for more informative error output from
> signature checking...
>
>
>  lib/libalpm/sync.c | 4 ++++
>  1 file changed, 4 insertions(+)
>
> diff --git a/lib/libalpm/sync.c b/lib/libalpm/sync.c
> index f9217bd..c342bbf 100644
> --- a/lib/libalpm/sync.c
> +++ b/lib/libalpm/sync.c
> @@ -1094,6 +1094,10 @@ static int check_validity(alpm_handle_t *handle,
>         if(errors) {
>                 for(i = errors; i; i = i->next) {
>                         struct validity *v = i->data;
> +                       if(v->error == ALPM_ERR_PKG_MISSING_SIG) {
> +                               _alpm_log(handle, ALPM_LOG_ERROR,
> +                                               _("%s: missing required
> signature\n"), v->pkg->name);
> +                       }
>                         if(v->error == ALPM_ERR_PKG_INVALID_SIG) {
>

Correct me if I'm wrong but 'if(v->error == ALPM_ERR_PKG_INVALID_SIG) {'
could become 'else if...' couldn't it.

                                _alpm_process_siglist(handle, v->pkg->name,
> v->siglist,
>                                                 v->level &
> ALPM_SIG_PACKAGE_OPTIONAL,
> --
> 1.8.3.3
>
>
>


More information about the pacman-dev mailing list