mirror of
git://git.gnupg.org/gnupg.git
synced 2025-07-02 22:46:30 +02:00
gpg: Skip overlong keys and a print a warning.
* kbx/keybox-search.c (keybox_search): Add arg r_skipped and skip too long blobs. * sm/keydb.c (keydb_search): Call keybox_search with a dummy param. * g10/keydb.c (struct keydb_handle): Add field skipped_long_blobs. (keydb_search_reset): Reset that field. (keydb_search): Update that field. (keydb_get_skipped_counter): New. * g10/keylist.c (list_all): Print count of skipped keys. Signed-off-by: Werner Koch <wk@gnupg.org>
This commit is contained in:
parent
60e21d8b85
commit
2ca90f78ce
6 changed files with 29 additions and 5 deletions
|
@ -718,10 +718,12 @@ keybox_search_reset (KEYBOX_HANDLE hd)
|
|||
|
||||
|
||||
/* Note: When in ephemeral mode the search function does visit all
|
||||
blobs but in standard mode, blobs flagged as ephemeral are ignored. */
|
||||
blobs but in standard mode, blobs flagged as ephemeral are ignored.
|
||||
The value at R_SKIPPED is updated by the number of skipped long
|
||||
records (counts PGP and X.509). */
|
||||
int
|
||||
keybox_search (KEYBOX_HANDLE hd, KEYBOX_SEARCH_DESC *desc, size_t ndesc,
|
||||
size_t *r_descindex)
|
||||
size_t *r_descindex, unsigned long *r_skipped)
|
||||
{
|
||||
int rc;
|
||||
size_t n;
|
||||
|
@ -852,6 +854,13 @@ keybox_search (KEYBOX_HANDLE hd, KEYBOX_SEARCH_DESC *desc, size_t ndesc,
|
|||
|
||||
_keybox_release_blob (blob); blob = NULL;
|
||||
rc = _keybox_read_blob (&blob, hd->fp);
|
||||
if (gpg_err_code (rc) == GPG_ERR_TOO_LARGE
|
||||
&& gpg_err_source (rc) == GPG_ERR_SOURCE_KEYBOX)
|
||||
{
|
||||
++*r_skipped;
|
||||
continue; /* Skip too large records. */
|
||||
}
|
||||
|
||||
if (rc)
|
||||
break;
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue