$Log$
+ Revision 580.26 2001/08/22 03:43:11 ajc
+ * internet_addressing.c: fixed a bug in process_rfc822_addr() that caused the
+ server to jump into an endless loop when an e-mail address contained
+ unbalanced angle brackets.
+
Revision 580.25 2001/08/15 04:26:02 ajc
* Added split horizon and delete-after-spool to the new networker
Fri Jul 10 1998 Art Cancro <ajc@uncensored.citadel.org>
* Initial CVS import
-
void process_rfc822_addr(char *rfc822, char *user, char *node, char *name)
{
int a;
+ int lb, rb;
strcpy(user, "");
strcpy(node, config.c_fqdn);
/* extract full name - first, it's From minus <userid> */
strcpy(name, rfc822);
+ lb = (-1);
+ rb = (-1);
for (a = 0; a < strlen(name); ++a) {
- if (name[a] == '<') {
- do {
- strcpy(&name[a], &name[a + 1]);
- } while ((strlen(name) > 0) && (name[a] != '>'));
- strcpy(&name[a], &name[a + 1]);
- }
+ if (name[a] == '<') lb = a;
+ if (name[a] == '>') rb = a;
}
+ if ( (lb > 0) && (rb > lb) ) {
+ strcpy(&name[lb - 1], &name[rb + 1]);
+ }
+
/* strip anything to the left of a bang */
while ((strlen(name) > 0) && (haschar(name, '!') > 0))
strcpy(name, &name[1]);