From 46275151f861819c0a3de1b9f6975252055f3372 Mon Sep 17 00:00:00 2001 From: Eric Allman Date: Fri, 29 Oct 1993 02:08:01 -0800 Subject: [PATCH] fix core dump caused by writing to read-only memory SCCS-vsn: usr.sbin/sendmail/src/parseaddr.c 8.15 --- usr/src/usr.sbin/sendmail/src/parseaddr.c | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/usr/src/usr.sbin/sendmail/src/parseaddr.c b/usr/src/usr.sbin/sendmail/src/parseaddr.c index 0d45d9757b..0e65ccb40e 100644 --- a/usr/src/usr.sbin/sendmail/src/parseaddr.c +++ b/usr/src/usr.sbin/sendmail/src/parseaddr.c @@ -7,7 +7,7 @@ */ #ifndef lint -static char sccsid[] = "@(#)parseaddr.c 8.14 (Berkeley) %G%"; +static char sccsid[] = "@(#)parseaddr.c 8.15 (Berkeley) %G%"; #endif /* not lint */ #include "sendmail.h" @@ -211,15 +211,17 @@ invalidaddr(addr, delimptr) char savedelim; if (delimptr != NULL) + { savedelim = *delimptr; + if (savedelim != '\0') + *delimptr = '\0'; + } #if 0 /* for testing.... */ if (strcmp(addr, "INvalidADDR") == 0) { usrerr("553 INvalid ADDRess"); - if (delimptr != NULL) - *delimptr = savedelim; - return TRUE; + goto addrfailure; } #endif for (; *addr != '\0'; addr++) @@ -227,12 +229,17 @@ invalidaddr(addr, delimptr) if ((*addr & 0340) == 0200) break; } - if (delimptr != NULL) - *delimptr = savedelim; if (*addr == '\0') + { + if (savedelim != '\0' && delimptr != NULL) + *delimptr = savedelim; return FALSE; + } setstat(EX_USAGE); usrerr("553 Address contained invalid control characters"); + addrfailure: + if (savedelim != '\0' && delimptr != NULL) + *delimptr = savedelim; return TRUE; } /* -- 2.20.1