[pacman-dev] [PATCH] Report which package is missing a signature
Allan McRae
allan at archlinux.org
Sun Jul 21 23:48:57 EDT 2013
On 22/07/13 13:46, Allan McRae wrote:
> On 21/07/13 22:33, Ashley Whetter wrote:
>> 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.
>>
>
Ugh... clarifying the clarification...
> Just to clarify, I was reporting that
*pacman*
> still outputs one of
> these error messages depending on where the package with the missing
> signature comes in the transaction. It is clear which is the right
> message, but I do not intend to fix that.
>
>>> 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.
>>
>
> The "invalid or corrupted package (PGP signature)" (that is already
> used) is a whole heap clearer when you are informed that PGP signature
> verification failed just above and are offered to delete the corrupt
> package.
>
>>>
>>> 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.
>
> Sure.
>
>> _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