X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/62ab3819f29a419801665c74944d973101c9c466..4e23ddd4d595d50de4b7fa0ab6bf3533bcf42723:/sbr/mf.c diff --git a/sbr/mf.c b/sbr/mf.c index 84f1afa9..c8868178 100644 --- a/sbr/mf.c +++ b/sbr/mf.c @@ -8,8 +8,6 @@ */ #include -#include -#include #include /* @@ -23,6 +21,7 @@ static int local_part (char *); static int domain (char *); static int route (char *); static int my_lex (char *); +static int contains8bit (const char *); int @@ -232,6 +231,15 @@ getadrx (const char *addrs) break; } + /* + * Reject the address if key fields contain 8bit characters + */ + + if (contains8bit(mbox) || contains8bit(host) || contains8bit(path) || + contains8bit(grp)) { + strcpy(err, "Address contains 8-bit characters"); + } + if (err[0]) for (;;) { switch (last_lex) { @@ -720,6 +728,25 @@ got_atom: ; } +/* + * Return true if the string contains an 8-bit character + */ + +static int +contains8bit(const char *p) +{ + if (! p) + return 0; + + for (; *p; p++) { + if (! isascii((unsigned char) *p)) + return 1; + } + + return 0; +} + + char * legal_person (const char *p) {