gpg: Lowercase mailbox for PKA lookups.
authorWerner Koch <wk@gnupg.org>
Thu, 26 Feb 2015 17:16:45 +0000 (18:16 +0100)
committerWerner Koch <wk@gnupg.org>
Thu, 26 Feb 2015 17:16:45 +0000 (18:16 +0100)
* common/stringhelp.c (ascii_strlwr): New.
* common/mbox-util.c (mailbox_from_userid): Downcase result.
--

Signed-off-by: Werner Koch <wk@gnupg.org>
common/mbox-util.c
common/stringhelp.c
common/stringhelp.h

index 332f62f..0885f0e 100644 (file)
@@ -124,8 +124,9 @@ is_valid_mailbox (const char *name)
 
 
 /* Return the mailbox (local-part@domain) form a standard user id.
-   Caller must free the result.  Returns NULL if no valid mailbox was
-   found (or we are out of memory). */
+   All plain ASCII characters in the result are converted to
+   lowercase.  Caller must free the result.  Returns NULL if no valid
+   mailbox was found (or we are out of memory). */
 char *
 mailbox_from_userid (const char *userid)
 {
@@ -176,7 +177,7 @@ mailbox_from_userid (const char *userid)
   else
     errno = EINVAL;
 
-  return result;
+  return result? ascii_strlwr (result): NULL;
 }
 
 
index 7128de5..42e1bcb 100644 (file)
@@ -804,6 +804,18 @@ ascii_tolower (int c)
     return c;
 }
 
+/* Lowercase all ASCII characters in S.  */
+char *
+ascii_strlwr (char *s)
+{
+  char *p = s;
+
+  for (p=s; *p; p++ )
+    if (isascii (*p) && *p >= 'A' && *p <= 'Z')
+      *p |= 0x20;
+
+  return s;
+}
 
 int
 ascii_strcasecmp( const char *a, const char *b )
index d4fe169..ffef2d5 100644 (file)
@@ -75,6 +75,7 @@ int ascii_isupper (int c);
 int ascii_islower (int c);
 int ascii_toupper (int c);
 int ascii_tolower (int c);
+char *ascii_strlwr (char *s);
 int ascii_strcasecmp( const char *a, const char *b );
 int ascii_strncasecmp (const char *a, const char *b, size_t n);
 int ascii_memcasecmp( const void *a, const void *b, size_t n );