]> git.pld-linux.org Git - packages/sendmail.git/blob - sendmail-dtelnet.patch
- merged cf with main package,
[packages/sendmail.git] / sendmail-dtelnet.patch
1 diff -Nur sendmail-8.9.3/src/conf.c sendmail-8.9.3.pld/src/conf.c
2 --- sendmail-8.9.3/src/conf.c   Wed Feb 10 18:23:27 1999
3 +++ sendmail-8.9.3.pld/src/conf.c       Wed Feb 10 18:22:45 1999
4 @@ -284,6 +284,8 @@
5         ColonOkInAddr = TRUE;
6         DontLockReadFiles = TRUE;
7         DoubleBounceAddr = "postmaster";
8 +       DetectTelnet = FALSE;
9 +       ExitOnTelnet = TRUE;
10         MaxHeadersLength = MAXHDRSLEN;
11         snprintf(buf, sizeof buf, "%s%sdead.letter",
12                 _PATH_VARTMP,
13 diff -Nur sendmail-8.9.3/src/err.c sendmail-8.9.3.pld/src/err.c
14 --- sendmail-8.9.3/src/err.c    Tue Dec 29 18:42:18 1998
15 +++ sendmail-8.9.3.pld/src/err.c        Wed Feb 10 18:18:33 1999
16 @@ -543,15 +543,18 @@
17                 (void) snprintf(eb, spaceleft, "%s... ",
18                         shortenstring(to, MAXSHORTSTR));
19                 spaceleft -= strlen(eb);
20 +       /*
21                 while (*eb != '\0')
22                         *eb++ &= 0177;
23 +       */
24         }
25  
26         /* output the message */
27         (void) vsnprintf(eb, spaceleft, fmt, ap);
28         spaceleft -= strlen(eb);
29 -       while (*eb != '\0')
30 +/*     while (*eb != '\0')
31                 *eb++ &= 0177;
32 +*/
33  
34         /* output the error code, if any */
35         if (eno != 0)
36 diff -Nur sendmail-8.9.3/src/readcf.c sendmail-8.9.3.pld/src/readcf.c
37 --- sendmail-8.9.3/src/readcf.c Fri Jan 29 00:28:53 1999
38 +++ sendmail-8.9.3.pld/src/readcf.c     Wed Feb 10 18:18:33 1999
39 @@ -1523,6 +1523,10 @@
40  #define O_MAXMIMEHDRLEN        0xa8
41         { "MaxMimeHeaderLength",        O_MAXMIMEHDRLEN,        FALSE   },
42  #endif
43 +#define        O_DETECTTELNET  0xa6
44 +       { "DetectTelnet",               O_DETECTTELNET, TRUE    },
45 +#define O_EXITONTELNET 0xa7
46 +       { "ExitOnTelnet",               O_EXITONTELNET, TRUE    },
47  #if _FFR_CONTROL_SOCKET
48  #define O_CONTROLSOCKET        0xa9
49         { "ControlSocketName",          O_CONTROLSOCKET,        FALSE   },
50 @@ -2479,6 +2483,13 @@
51                         printf("Warning: MaxHeadersLength: headers length limit set lower than %d\n", MAXHDRSLEN);
52                 break;
53  #endif
54 +         case O_DETECTTELNET:  /* detect telnet */
55 +               DetectTelnet = atobool(val);
56 +               break;
57 +
58 +         case O_EXITONTELNET:  /* exit if telnet detected */
59 +               ExitOnTelnet = atobool(val);
60 +               break;
61  
62           default:
63                 if (tTd(37, 1))
64 diff -Nur sendmail-8.9.3/src/sendmail.h sendmail-8.9.3.pld/src/sendmail.h
65 --- sendmail-8.9.3/src/sendmail.h       Wed Feb 10 18:23:27 1999
66 +++ sendmail-8.9.3.pld/src/sendmail.h   Wed Feb 10 18:18:33 1999
67 @@ -1182,6 +1182,8 @@
68  EXTERN bool    UseNameServer;  /* using DNS -- interpret h_errno & MX RRs */
69  EXTERN bool    UseHesiod;      /* using Hesiod -- interpret Hesiod errors */
70  EXTERN bool    SevenBitInput;  /* force 7-bit data on input */
71 +EXTERN bool    DetectTelnet;   /* force telnet detection on/off */
72 +EXTERN bool    ExitOnTelnet;   /* exit if telnet detected */
73  EXTERN bool    HasEightBits;   /* has at least one eight bit input byte */
74  EXTERN bool    ConfigFileRead; /* configuration file has been read */
75  EXTERN time_t  SafeAlias;      /* interval to wait until @:@ in alias file */
76 diff -Nur sendmail-8.9.3/src/srvrsmtp.c sendmail-8.9.3.pld/src/srvrsmtp.c
77 --- sendmail-8.9.3/src/srvrsmtp.c       Tue Dec 29 18:42:21 1998
78 +++ sendmail-8.9.3.pld/src/srvrsmtp.c   Wed Feb 10 18:18:33 1999
79 @@ -21,6 +21,7 @@
80  #endif /* not lint */
81  
82  # include <errno.h>
83 +#include <arpa/telnet.h>
84  
85  # if SMTP
86  
87 @@ -139,6 +140,9 @@
88         QUEUE_CHAR *new;
89         char inp[MAXLINE];
90         char cmdbuf[MAXLINE];
91 +       char telnet_request[] = {IAC, DO, TELOPT_SGA, 0};
92 +       char telnet_response[] = {IAC, WILL, TELOPT_SGA, 0};
93 +       char *telnet_tmp;
94         extern ENVELOPE BlankEnvelope;
95         extern void help __P((char *));
96         extern void settime __P((ENVELOPE *));
97 @@ -182,8 +186,15 @@
98         id = strchr(inp, ' ');
99         if (id == NULL)
100                 id = &inp[strlen(inp)];
101 -       cmd = p == NULL ? "220 %.*s ESMTP%s" : "220-%.*s ESMTP%s";
102 -       message(cmd, id - inp, inp, id);
103 +       if (DetectTelnet)
104 +       {
105 +         cmd = p == NULL ? "220 %.*s ESMTP%s%s" : "220-%.*s ESMTP%s%s";
106 +         message(cmd, id - inp, inp, id, telnet_request);
107 +       } else
108 +       {
109 +         cmd = p == NULL ? "220 %.*s ESMTP%s" : "220-%.*s ESMTP%s";
110 +         message(cmd, id - inp, inp, id);
111 +       }
112  
113         /* output remaining lines */
114         while ((id = p) != NULL && (p = strchr(id, '\n')) != NULL)
115 @@ -253,6 +264,20 @@
116                                 ExitStat = EX_QUIT;
117                         finis(TRUE, ExitStat);
118                 }
119 +
120 +               if (DetectTelnet && strlen(inp) >= 3)
121 +                  for (telnet_tmp = inp; *(telnet_tmp+2); telnet_tmp++)
122 +                    if (!strncmp(telnet_tmp, telnet_response, 3))
123 +                    {
124 +                         sm_syslog(LOG_CRIT, e->e_id,
125 +                           "telnet detected from from %.100s (%.100s)",
126 +                           CurSmtpClient, anynet_ntoa(&RealHostAddr));
127 +                         if (ExitOnTelnet)
128 +                         {
129 +                            message("571 Unauthorized usage prohibited");
130 +                            goto doquit;
131 +                         }
132 +                    }
133  
134                 /* clean up end of line */
135                 fixcrlf(inp, TRUE);
This page took 0.060964 seconds and 3 git commands to generate.