]> diplodocus.org Git - nmh/blobdiff - sbr/mts.c
Fix invalid pointer arithmetic.
[nmh] / sbr / mts.c
index f498615cb018b5a87e49e40ec537ff1a8225ed8b..f6180b03b98f7705c387bb39250f29a8ab3d16ac 100644 (file)
--- a/sbr/mts.c
+++ b/sbr/mts.c
@@ -1,6 +1,4 @@
-
-/*
- * mts.c -- definitions for the mail transport system
+/* mts.c -- definitions for the mail transport system
  *
  * This code is Copyright (c) 2002, by the authors of nmh.  See the
  * COPYRIGHT file in the root directory of the nmh distribution for
@@ -8,13 +6,10 @@
  */
 
 #include <h/mh.h>   /* for snprintf() */
-#include <h/nmh.h>
 #include <h/utils.h>
 
 #define nmhetcdir(file) NMHETCDIR#file
 
-#include <ctype.h>
-#include <stdio.h>
 #include <h/mts.h>
 #include <pwd.h>
 #include <sys/socket.h>
@@ -51,9 +46,6 @@ char *mmdflfil = "";
 char *uucpldir = "/usr/spool/mail";
 char *uucplfil = "";
 
-char *mmdlm1 = "\001\001\001\001\n";
-char *mmdlm2 = "\001\001\001\001\n";
-
 char *spoollocking = DEFAULT_LOCKING;
 
 /* Cache the username, fullname, and mailbox of the user */
@@ -65,7 +57,7 @@ static char localmbox[BUFSIZ];
  * MTS specific variables
  */
 static char *mts_method = "smtp";
-int  sm_mts    = MTS_SENDMAIL_SMTP;
+int  sm_mts    = MTS_SMTP;
 char *sendmail = SENDMAILPATH;
 
 /*
@@ -81,13 +73,6 @@ char *pophost    = "";
 char *maildelivery = nmhetcdir(/maildelivery);
 
 
-/*
- * Aliasing Facility (doesn't belong here)
- */
-int Everyone = NOTOK;
-static char *everyone = "-1";
-char *NoShell = "";
-
 /*
  * Customize the MTS settings for nmh by adjusting
  * the file mts.conf in the nmh etc directory.
@@ -107,8 +92,6 @@ static struct bind binds[] = {
     { "spoollocking", &spoollocking },
     { "uucpldir", &uucpldir },
     { "uucplfil", &uucplfil },
-    { "mmdelim1", &mmdlm1 },
-    { "mmdelim2", &mmdlm2 },
     { "mts",      &mts_method },
     { "sendmail", &sendmail  },
     { "clientname",  &clientname },
@@ -116,8 +99,6 @@ static struct bind binds[] = {
     { "pophost", &pophost },
 
     { "maildelivery", &maildelivery },
-    { "everyone", &everyone },
-    { "noshell", &NoShell },
     { NULL, NULL }
 };
 
@@ -147,12 +128,11 @@ save_mts_method (const char *value) {
  */
 
 void
-mts_init (char *name)
+mts_init (void)
 {
     const char *cp;
     FILE *fp;
     static int inited = 0;
-    NMH_UNUSED (name);
 
     if (inited++ || (fp = fopen (get_mtsconf_pathname(), "r")) == NULL)
        return;
@@ -166,8 +146,6 @@ mts_init (char *name)
         fclose (fp);
     }
 
-    Everyone = atoi (everyone);
-
     save_mts_method (mts_method);
 }
 
@@ -185,7 +163,6 @@ tailor_value (char *s)
     int i, r;
     char *bp;
     char buffer[BUFSIZ];
-    size_t len;
 
     for (bp = buffer; *s; bp++, s++) {
        if (*s != QUOTE) {
@@ -198,6 +175,7 @@ tailor_value (char *s)
                case 't': *bp = '\t'; break;
 
                case 0: s--;
+                   /* FALLTHRU */
                case QUOTE: 
                    *bp = QUOTE;
                    break;
@@ -209,7 +187,7 @@ tailor_value (char *s)
                    }
                    r = ((unsigned char) *s) != '0' ? 10 : 8;
                    for (i = 0; isdigit ((unsigned char) *s); s++)
-                       i = i * r + ((unsigned char) *s) - '0';
+                       i *= r + ((unsigned char) *s) - '0';
                    s--;
                    *bp = toascii (i);
                    break;
@@ -218,11 +196,7 @@ tailor_value (char *s)
     }
     *bp = 0;
 
-    len = strlen (buffer) + 1;
-    bp = mh_xmalloc (len);
-    memcpy (bp, buffer, len);
-
-    return bp;
+    return mh_xstrdup(buffer);
 }
 
 /*
@@ -250,7 +224,7 @@ LocalName (int flag)
     if (buf[0])
        return buf;
 
-    mts_init ("mts");
+    mts_init ();
 
     /* check if the mts.conf file specifies a "localname" */
     if (*localname && flag == 0) {
@@ -261,7 +235,7 @@ LocalName (int flag)
        gethostname (buf, sizeof(buffer0) - 1);
        /* now fully qualify our name */
 
-       memset(&hints, 0, sizeof(hints));
+        ZERO(&hints);
        hints.ai_flags = AI_CANONNAME;
        hints.ai_family = PF_UNSPEC;
        if (getaddrinfo(buf, NULL, &hints, &res) == 0) {
@@ -297,7 +271,7 @@ SystemName (void)
     if (buffer[0])
        return buffer;
 
-    mts_init ("mts");
+    mts_init ();
 
     /* check if mts.conf file specifies a "systemname" */
     if (*systemname) {