diff options
Diffstat (limited to 'blaze822.c')
-rw-r--r-- | blaze822.c | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/blaze822.c b/blaze822.c index 9a596b6..a96cd11 100644 --- a/blaze822.c +++ b/blaze822.c @@ -151,13 +151,26 @@ blaze822_addr(char *s, char **dispo, char **addro) *addr = 0; while (*s) { + startover: if (*s == '<') { char *c = addr; char *e = addr + sizeof addr; s++; - while (*s && c < e && *s != '>') - *c++ = *s++; + while (*s && c < e && *s != '>') { + if (*s == '<') { + goto startover; + } else if (*s == '"') { + // local part may be quoted, allow all + s++; + while (*s && c < e && *s != '"') + *c++ = *s++; + if (*s == '"') + s++; + } else { + *c++ = *s++; + } + } if (*s == '>') s++; *c = 0; |