X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/ce399941039778944bc5bc8d10c5f3603089af30..e9d39f548915dfaeb5dee56dd3bf0d9d81bf9780:/sbr/mf.c diff --git a/sbr/mf.c b/sbr/mf.c index 6adbba72..e2da81d0 100644 --- a/sbr/mf.c +++ b/sbr/mf.c @@ -65,7 +65,7 @@ isat (const char *p) * getadrx() implements a partial 822-style address parser. The parser * is neither complete nor correct. It does however recognize nearly all * of the 822 address syntax. In addition it handles the majority of the - * 733 syntax as well. Most problems arise from trying to accomodate both. + * 733 syntax as well. Most problems arise from trying to accommodate both. * * In terms of 822, the route-specification in * @@ -174,11 +174,12 @@ static char adr[BUFSIZ]; static struct adrx adrxs2; +/* eai = Email Address Internationalization */ struct adrx * -getadrx (const char *addrs) +getadrx (const char *addrs, int eai) { - register char *bp; - register struct adrx *adrxp = &adrxs2; + char *bp; + struct adrx *adrxp = &adrxs2; if (pers) free (pers); @@ -230,6 +231,17 @@ getadrx (const char *addrs) break; } + if (! eai) { + /* + * Reject the address if key fields contain 8bit characters + */ + + if (contains8bit(mbox, NULL) || contains8bit(host, NULL) || + contains8bit(path, NULL) || contains8bit(grp, NULL)) { + strcpy(err, "Address contains 8-bit characters"); + } + } + if (err[0]) for (;;) { switch (last_lex) { @@ -437,7 +449,7 @@ phrase (char *buffer) static int route_addr (char *buffer) { - register char *pp = cp; + char *pp = cp; if (my_lex (buffer) == LX_AT) { if (route (buffer) == NOTOK) @@ -722,7 +734,7 @@ char * legal_person (const char *p) { int i; - register const char *cp; + const char *cp; static char buffer[BUFSIZ]; if (*p == '"') @@ -742,7 +754,7 @@ int mfgets (FILE *in, char **bp) { int i; - register char *cp, *dp, *ep; + char *cp, *dp, *ep; static int len = 0; static char *pp = NULL;