(prepare_new_sig, _gpgme_verify_status_handler): Remove
unused result.signatures items.
This commit is contained in:
parent
a33e7ba3c7
commit
09bd0f6a89
@ -1,5 +1,8 @@
|
|||||||
2004-04-15 Werner Koch <wk@gnupg.org>
|
2004-04-15 Werner Koch <wk@gnupg.org>
|
||||||
|
|
||||||
|
* verify.c (prepare_new_sig, _gpgme_verify_status_handler): Remove
|
||||||
|
unused result.signatures items.
|
||||||
|
|
||||||
* keylist.c (gpgme_get_key): Return an error if FPR is NULL.
|
* keylist.c (gpgme_get_key): Return an error if FPR is NULL.
|
||||||
|
|
||||||
2004-04-08 Werner Koch <wk@gnupg.org>
|
2004-04-08 Werner Koch <wk@gnupg.org>
|
||||||
|
@ -38,6 +38,7 @@ typedef struct
|
|||||||
|
|
||||||
gpgme_signature_t current_sig;
|
gpgme_signature_t current_sig;
|
||||||
int did_prepare_new_sig;
|
int did_prepare_new_sig;
|
||||||
|
int only_newsig_seen;
|
||||||
} *op_data_t;
|
} *op_data_t;
|
||||||
|
|
||||||
|
|
||||||
@ -152,6 +153,17 @@ prepare_new_sig (op_data_t opd)
|
|||||||
{
|
{
|
||||||
gpgme_signature_t sig;
|
gpgme_signature_t sig;
|
||||||
|
|
||||||
|
if (opd->only_newsig_seen && opd->current_sig)
|
||||||
|
{
|
||||||
|
/* We have only seen the NEWSIG status and nothing else - we
|
||||||
|
better skip this signature therefore and reuse it for the
|
||||||
|
next possible signature. */
|
||||||
|
sig = opd->current_sig;
|
||||||
|
memset (sig, 0, sizeof *sig);
|
||||||
|
assert (opd->result.signatures == sig);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
sig = calloc (1, sizeof (*sig));
|
sig = calloc (1, sizeof (*sig));
|
||||||
if (!sig)
|
if (!sig)
|
||||||
return gpg_error_from_errno (errno);
|
return gpg_error_from_errno (errno);
|
||||||
@ -160,7 +172,9 @@ prepare_new_sig (op_data_t opd)
|
|||||||
if (opd->current_sig)
|
if (opd->current_sig)
|
||||||
opd->current_sig->next = sig;
|
opd->current_sig->next = sig;
|
||||||
opd->current_sig = sig;
|
opd->current_sig = sig;
|
||||||
|
}
|
||||||
opd->did_prepare_new_sig = 1;
|
opd->did_prepare_new_sig = 1;
|
||||||
|
opd->only_newsig_seen = 0;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -508,7 +522,9 @@ _gpgme_verify_status_handler (void *priv, gpgme_status_code_t code, char *args)
|
|||||||
case GPGME_STATUS_NEWSIG:
|
case GPGME_STATUS_NEWSIG:
|
||||||
if (sig)
|
if (sig)
|
||||||
calc_sig_summary (sig);
|
calc_sig_summary (sig);
|
||||||
return prepare_new_sig (opd);
|
err = prepare_new_sig (opd);
|
||||||
|
opd->only_newsig_seen = 1;
|
||||||
|
return err;
|
||||||
|
|
||||||
case GPGME_STATUS_GOODSIG:
|
case GPGME_STATUS_GOODSIG:
|
||||||
case GPGME_STATUS_EXPSIG:
|
case GPGME_STATUS_EXPSIG:
|
||||||
@ -517,19 +533,23 @@ _gpgme_verify_status_handler (void *priv, gpgme_status_code_t code, char *args)
|
|||||||
case GPGME_STATUS_ERRSIG:
|
case GPGME_STATUS_ERRSIG:
|
||||||
if (sig && !opd->did_prepare_new_sig)
|
if (sig && !opd->did_prepare_new_sig)
|
||||||
calc_sig_summary (sig);
|
calc_sig_summary (sig);
|
||||||
|
opd->only_newsig_seen = 0;
|
||||||
return parse_new_sig (opd, code, args);
|
return parse_new_sig (opd, code, args);
|
||||||
|
|
||||||
case GPGME_STATUS_VALIDSIG:
|
case GPGME_STATUS_VALIDSIG:
|
||||||
|
opd->only_newsig_seen = 0;
|
||||||
return sig ? parse_valid_sig (sig, args)
|
return sig ? parse_valid_sig (sig, args)
|
||||||
: gpg_error (GPG_ERR_INV_ENGINE);
|
: gpg_error (GPG_ERR_INV_ENGINE);
|
||||||
|
|
||||||
case GPGME_STATUS_NODATA:
|
case GPGME_STATUS_NODATA:
|
||||||
|
opd->only_newsig_seen = 0;
|
||||||
if (!sig)
|
if (!sig)
|
||||||
return gpg_error (GPG_ERR_NO_DATA);
|
return gpg_error (GPG_ERR_NO_DATA);
|
||||||
sig->status = gpg_error (GPG_ERR_NO_DATA);
|
sig->status = gpg_error (GPG_ERR_NO_DATA);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case GPGME_STATUS_UNEXPECTED:
|
case GPGME_STATUS_UNEXPECTED:
|
||||||
|
opd->only_newsig_seen = 0;
|
||||||
if (!sig)
|
if (!sig)
|
||||||
return gpg_error (GPG_ERR_GENERAL);
|
return gpg_error (GPG_ERR_GENERAL);
|
||||||
sig->status = gpg_error (GPG_ERR_NO_DATA);
|
sig->status = gpg_error (GPG_ERR_NO_DATA);
|
||||||
@ -538,6 +558,7 @@ _gpgme_verify_status_handler (void *priv, gpgme_status_code_t code, char *args)
|
|||||||
case GPGME_STATUS_NOTATION_NAME:
|
case GPGME_STATUS_NOTATION_NAME:
|
||||||
case GPGME_STATUS_NOTATION_DATA:
|
case GPGME_STATUS_NOTATION_DATA:
|
||||||
case GPGME_STATUS_POLICY_URL:
|
case GPGME_STATUS_POLICY_URL:
|
||||||
|
opd->only_newsig_seen = 0;
|
||||||
return sig ? parse_notation (sig, code, args)
|
return sig ? parse_notation (sig, code, args)
|
||||||
: gpg_error (GPG_ERR_INV_ENGINE);
|
: gpg_error (GPG_ERR_INV_ENGINE);
|
||||||
|
|
||||||
@ -546,10 +567,12 @@ _gpgme_verify_status_handler (void *priv, gpgme_status_code_t code, char *args)
|
|||||||
case GPGME_STATUS_TRUST_MARGINAL:
|
case GPGME_STATUS_TRUST_MARGINAL:
|
||||||
case GPGME_STATUS_TRUST_FULLY:
|
case GPGME_STATUS_TRUST_FULLY:
|
||||||
case GPGME_STATUS_TRUST_ULTIMATE:
|
case GPGME_STATUS_TRUST_ULTIMATE:
|
||||||
|
opd->only_newsig_seen = 0;
|
||||||
return sig ? parse_trust (sig, code, args)
|
return sig ? parse_trust (sig, code, args)
|
||||||
: gpg_error (GPG_ERR_INV_ENGINE);
|
: gpg_error (GPG_ERR_INV_ENGINE);
|
||||||
|
|
||||||
case GPGME_STATUS_ERROR:
|
case GPGME_STATUS_ERROR:
|
||||||
|
opd->only_newsig_seen = 0;
|
||||||
/* The error status is informational, so we don't return an
|
/* The error status is informational, so we don't return an
|
||||||
error code if we are not ready to process this status. */
|
error code if we are not ready to process this status. */
|
||||||
return sig ? parse_error (sig, args) : 0;
|
return sig ? parse_error (sig, args) : 0;
|
||||||
@ -557,6 +580,29 @@ _gpgme_verify_status_handler (void *priv, gpgme_status_code_t code, char *args)
|
|||||||
case GPGME_STATUS_EOF:
|
case GPGME_STATUS_EOF:
|
||||||
if (sig && !opd->did_prepare_new_sig)
|
if (sig && !opd->did_prepare_new_sig)
|
||||||
calc_sig_summary (sig);
|
calc_sig_summary (sig);
|
||||||
|
if (opd->only_newsig_seen && sig)
|
||||||
|
{
|
||||||
|
gpgme_signature_t sig2;
|
||||||
|
/* The last signature has no valid information - remove it
|
||||||
|
from the list. */
|
||||||
|
assert (!sig->next);
|
||||||
|
if (sig == opd->result.signatures)
|
||||||
|
opd->result.signatures = NULL;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
for (sig2 = opd->result.signatures; sig2; sig2 = sig2->next)
|
||||||
|
if (sig2->next == sig)
|
||||||
|
{
|
||||||
|
sig2->next = NULL;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/* Note that there is no need to release the members of SIG
|
||||||
|
because we won't be here if they have been set. */
|
||||||
|
free (sig);
|
||||||
|
opd->current_sig = NULL;
|
||||||
|
}
|
||||||
|
opd->only_newsig_seen = 0;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
Loading…
Reference in New Issue
Block a user