mirror of
git://git.gnupg.org/gnupg.git
synced 2025-07-03 22:56:33 +02:00
common: Prepare for parsing mail sub-addresses.
* common/mbox-util.c (mailbox_from_userid): Add arg subaddress and implement. Change all callers to pass false for it. * common/t-mbox-util.c (run_mbox_no_sub_test): New. (run_filter): Add arg no_sub. (main): Call new test and add option --no-sub. -- Some stats: In the about 5300000 keys on the SKS servers we found 3055 unique mailboxes with a '+' in it. After removing leading and trailing '+' as well as multiple '+' (e.g. "c++" or "foo+bar+baz") 2697 were left which seem to be valid sub-addresses. To filter mailboxes out from a line delimited list with user-ids (e.g. an SQL output), the command t-mbox-util --verbose --filter can be used; to output w/o sub-addresses add --no-sub. GnuPG-bug-id: 4200 Signed-off-by: Werner Koch <wk@gnupg.org>
This commit is contained in:
parent
bbed4746ed
commit
6b9f772914
16 changed files with 139 additions and 27 deletions
|
@ -1469,7 +1469,7 @@ print_pka_or_dane_records (iobuf_t out, kbnode_t keyblock, PKT_public_key *pk,
|
|||
continue;
|
||||
|
||||
xfree (mbox);
|
||||
mbox = mailbox_from_userid (uid->name);
|
||||
mbox = mailbox_from_userid (uid->name, 0);
|
||||
if (!mbox)
|
||||
continue;
|
||||
|
||||
|
|
|
@ -1373,7 +1373,7 @@ pubkey_cmp (ctrl_t ctrl, const char *name, struct pubkey_cmp_cookie *old,
|
|||
n; n = find_next_kbnode (n, PKT_USER_ID))
|
||||
{
|
||||
PKT_user_id *uid = n->pkt->pkt.user_id;
|
||||
char *mbox = mailbox_from_userid (uid->name);
|
||||
char *mbox = mailbox_from_userid (uid->name, 0);
|
||||
int match = mbox ? strcasecmp (name, mbox) == 0 : 0;
|
||||
|
||||
xfree (mbox);
|
||||
|
|
|
@ -3130,7 +3130,7 @@ main (int argc, char **argv)
|
|||
break;
|
||||
case oSender:
|
||||
{
|
||||
char *mbox = mailbox_from_userid (pargs.r.ret_str);
|
||||
char *mbox = mailbox_from_userid (pargs.r.ret_str, 0);
|
||||
if (!mbox)
|
||||
log_error (_("\"%s\" is not a proper mail address\n"),
|
||||
pargs.r.ret_str);
|
||||
|
|
|
@ -1264,7 +1264,7 @@ impex_filter_getval (void *cookie, const char *propname)
|
|||
{
|
||||
if (!uid->mbox)
|
||||
{
|
||||
uid->mbox = mailbox_from_userid (uid->name);
|
||||
uid->mbox = mailbox_from_userid (uid->name, 0);
|
||||
}
|
||||
result = uid->mbox;
|
||||
}
|
||||
|
|
|
@ -1020,7 +1020,7 @@ list_keyblock_print (ctrl_t ctrl, kbnode_t keyblock, int secret, int fpr,
|
|||
char *mbox, *hash, *p;
|
||||
char hashbuf[32];
|
||||
|
||||
mbox = mailbox_from_userid (uid->name);
|
||||
mbox = mailbox_from_userid (uid->name, 0);
|
||||
if (mbox && (p = strchr (mbox, '@')))
|
||||
{
|
||||
*p++ = 0;
|
||||
|
|
|
@ -2053,7 +2053,7 @@ keyserver_import_wkd (ctrl_t ctrl, const char *name, int quick,
|
|||
|
||||
/* We want to work on the mbox. That is what dirmngr will do anyway
|
||||
* and we need the mbox for the import filter anyway. */
|
||||
mbox = mailbox_from_userid (name);
|
||||
mbox = mailbox_from_userid (name, 0);
|
||||
if (!mbox)
|
||||
{
|
||||
err = gpg_error_from_syserror ();
|
||||
|
|
|
@ -153,7 +153,8 @@ mk_notation_policy_etc (PKT_signature *sig,
|
|||
char *mbox;
|
||||
|
||||
/* For now we use the uid which was used to locate the key. */
|
||||
if (pksk->user_id && (mbox = mailbox_from_userid (pksk->user_id->name)))
|
||||
if (pksk->user_id
|
||||
&& (mbox = mailbox_from_userid (pksk->user_id->name, 0)))
|
||||
{
|
||||
if (DBG_LOOKUP)
|
||||
log_debug ("setting Signer's UID to '%s'\n", mbox);
|
||||
|
|
|
@ -3292,7 +3292,7 @@ show_warning (const char *fingerprint, strlist_t user_id_list)
|
|||
static char *
|
||||
email_from_user_id (const char *user_id)
|
||||
{
|
||||
char *email = mailbox_from_userid (user_id);
|
||||
char *email = mailbox_from_userid (user_id, 0);
|
||||
if (! email)
|
||||
{
|
||||
/* Hmm, no email address was provided or we are out of core. Just
|
||||
|
|
|
@ -1131,7 +1131,7 @@ tdb_get_validity_core (ctrl_t ctrl,
|
|||
if (sig && sig->signers_uid)
|
||||
/* Make sure the UID matches. */
|
||||
{
|
||||
char *email = mailbox_from_userid (user_id->name);
|
||||
char *email = mailbox_from_userid (user_id->name, 0);
|
||||
if (!email || !*email || strcmp (sig->signers_uid, email) != 0)
|
||||
{
|
||||
if (DBG_TRUST)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue