avoid null pointer dereferences in some degenerate cases
authorEric Allman <eric@ucbvax.Berkeley.EDU>
Sun, 9 Oct 1994 01:25:20 +0000 (17:25 -0800)
committerEric Allman <eric@ucbvax.Berkeley.EDU>
Sun, 9 Oct 1994 01:25:20 +0000 (17:25 -0800)
SCCS-vsn: usr.sbin/sendmail/src/headers.c 8.37
SCCS-vsn: usr.sbin/sendmail/src/util.c 8.45

usr/src/usr.sbin/sendmail/src/headers.c
usr/src/usr.sbin/sendmail/src/util.c

index 6dc2751..213c6d9 100644 (file)
@@ -7,7 +7,7 @@
  */
 
 #ifndef lint
  */
 
 #ifndef lint
-static char sccsid[] = "@(#)headers.c  8.36 (Berkeley) %G%";
+static char sccsid[] = "@(#)headers.c  8.37 (Berkeley) %G%";
 #endif /* not lint */
 
 # include <errno.h>
 #endif /* not lint */
 
 # include <errno.h>
@@ -566,8 +566,8 @@ logsender(e, msgid)
 #  if (SYSLOG_BUFSIZE) >= 256
        sbp = sbuf;
        sprintf(sbp, "from=%.200s, size=%ld, class=%d, pri=%ld, nrcpts=%d",
 #  if (SYSLOG_BUFSIZE) >= 256
        sbp = sbuf;
        sprintf(sbp, "from=%.200s, size=%ld, class=%d, pri=%ld, nrcpts=%d",
-           e->e_from.q_paddr, e->e_msgsize, e->e_class,
-           e->e_msgpriority, e->e_nrcpts);
+           e->e_from.q_paddr == NULL ? "<NONE>" : e->e_from.q_paddr,
+           e->e_msgsize, e->e_class, e->e_msgpriority, e->e_nrcpts);
        sbp += strlen(sbp);
        if (msgid != NULL)
        {
        sbp += strlen(sbp);
        if (msgid != NULL)
        {
@@ -588,7 +588,8 @@ logsender(e, msgid)
 #  else                        /* short syslog buffer */
 
        syslog(LOG_INFO, "%s: from=%s",
 #  else                        /* short syslog buffer */
 
        syslog(LOG_INFO, "%s: from=%s",
-               e->e_id, shortenstring(e->e_from.q_paddr, 83));
+               e->e_id, e->e_from.q_paddr == NULL ? "<NONE>" :
+                               shortenstring(e->e_from.q_paddr, 83));
        syslog(LOG_INFO, "%s: size=%ld, class=%ld, pri=%ld, nrcpts=%d",
                e->e_id, e->e_msgsize, e->e_class,
                e->e_msgpriority, e->e_nrcpts);
        syslog(LOG_INFO, "%s: size=%ld, class=%ld, pri=%ld, nrcpts=%d",
                e->e_id, e->e_msgsize, e->e_class,
                e->e_msgpriority, e->e_nrcpts);
index 2431b68..4fb72b5 100644 (file)
@@ -7,7 +7,7 @@
  */
 
 #ifndef lint
  */
 
 #ifndef lint
-static char sccsid[] = "@(#)util.c     8.44 (Berkeley) %G%";
+static char sccsid[] = "@(#)util.c     8.45 (Berkeley) %G%";
 #endif /* not lint */
 
 # include "sendmail.h"
 #endif /* not lint */
 
 # include "sendmail.h"
@@ -516,10 +516,11 @@ safefile(fn, uid, gid, uname, flags, mode)
                {
                        register char **gp;
 
                {
                        register char **gp;
 
-                       for (gp = gr->gr_mem; *gp != NULL; gp++)
+                       for (gp = gr->gr_mem; gp != NULL && *gp != NULL; gp++)
                                if (strcmp(*gp, uname) == 0)
                                        break;
                                if (strcmp(*gp, uname) == 0)
                                        break;
-                       if (*gp != NULL && bitset(S_IXGRP, stbuf.st_mode))
+                       if (gp != NULL && *gp != NULL &&
+                           bitset(S_IXGRP, stbuf.st_mode))
                                continue;
                }
 #endif
                                continue;
                }
 #endif