aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>2009-07-16 07:40:16 +0000
committerWerner Koch <[email protected]>2009-07-16 07:40:16 +0000
commit81d7fbc7cb18153822f20af225c26d5acbaea389 (patch)
tree16febfaa0e00c129dc469831f7f8f1c864c611aa
parentfix bug#1085. (diff)
downloadgnupg-81d7fbc7cb18153822f20af225c26d5acbaea389.tar.gz
gnupg-81d7fbc7cb18153822f20af225c26d5acbaea389.zip
Fix bug#1087.
-rw-r--r--g10/ChangeLog7
-rw-r--r--g10/misc.c12
2 files changed, 17 insertions, 2 deletions
diff --git a/g10/ChangeLog b/g10/ChangeLog
index 3e3d6dbe7..1691b5800 100644
--- a/g10/ChangeLog
+++ b/g10/ChangeLog
@@ -1,3 +1,8 @@
+2009-07-16 Werner Koch <[email protected]>
+
+ * misc.c (has_invalid_email_chars): Let non-ascii characters pass
+ through. Fixes bug#1087.
+
2009-06-24 Werner Koch <[email protected]>
* passphrase.c (passphrase_to_dek): Do not deref a PW of NULL.
@@ -13459,7 +13464,7 @@ Thu Feb 12 22:24:42 1998 Werner Koch (wk@frodo)
Copyright 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
- 2007 Free Software Foundation, Inc.
+ 2007, 2008, 2009 Free Software Foundation, Inc.
This file is free software; as a special exception the author gives
unlimited permission to copy and/or distribute it, with or without
diff --git a/g10/misc.c b/g10/misc.c
index 11af251e1..8bc144a58 100644
--- a/g10/misc.c
+++ b/g10/misc.c
@@ -1132,6 +1132,16 @@ unescape_percent_string (const unsigned char *s)
}
+/* Check whether the string has characters not valid in an RFC-822
+ address. To cope with OpenPGP we ignore non-ascii characters
+ so that for example umlauts are legal in an email address. An
+ OpenPGP user ID must be utf-8 encoded but there is no strict
+ requirement for RFC-822. Thus to avoid IDNA encoding we put the
+ address verbatim as utf-8 into the user ID under the assumption
+ that mail programs handle IDNA at a lower level and take OpenPGP
+ user IDs as utf-8. Note that we can't do an utf-8 encoding
+ checking here because in keygen.c this function is called with the
+ native encoding and native to utf-8 encoding is only done later. */
int
has_invalid_email_chars (const char *s)
{
@@ -1142,7 +1152,7 @@ has_invalid_email_chars (const char *s)
for ( ; *s; s++ )
{
if ( *s & 0x80 )
- return 1;
+ continue; /* We only care about ASCII. */
if ( *s == '@' )
at_seen=1;
else if ( !at_seen && !( !!strchr( valid_chars, *s ) || *s == '+' ) )