]> Zhao Yanbai Git Server - minix.git/commitdiff
Remove building with NOCRYPTO option 47/3547/1 freenode-registration-for-minix-by-saturn-96c65005 master saturn-infratest-pleaseignore-20210817
authorSevan Janiyan <venture37@geeklan.co.uk>
Sun, 4 Nov 2018 14:21:02 +0000 (14:21 +0000)
committerLionel Sambuc <lionel.sambuc@gmail.com>
Wed, 14 Nov 2018 07:26:58 +0000 (08:26 +0100)
Infrastructure change to come in a separate commit.
https://mail-index.netbsd.org/tech-crypto/2017/05/06/msg000719.html
Patch for CVE-2018-049.
Prevent shell execution with r command.
Check bounds before dereferencing in encryption routines.
Document -S to disable ! commands.

Sync with NetBSD-8

closes #268

Change-Id: I1c2849e0097b0cc9f89beef5ee24ccd9d73b4ee2

bin/ed/Makefile
bin/ed/cbc.c
bin/ed/ed.1
bin/ed/main.c

index 4bd271f04aa4d0347ec846cb11a3a29061a02031..b7ecc8454d5268e8bed00b1a5b800d5645839a28 100644 (file)
@@ -1,13 +1,10 @@
-#      $NetBSD: Makefile,v 1.36 2009/07/26 01:58:20 dholland Exp $
+#      $NetBSD: Makefile,v 1.37 2017/05/21 15:28:36 riastradh Exp $
 
 .include <bsd.own.mk>
 
 PROG=  ed
 CPPFLAGS+=-DBACKWARDS
-
-.if (${MKCRYPTO} != "no")
 CPPFLAGS+=-DDES
-.endif
 
 SRCS=  buf.c cbc.c glbl.c io.c main.c re.c sub.c undo.c
 
index 5d35caeeb0519f714b8da94ec43462d6370ab204..ef4282915ea22fd396d29a9eefe6de2f8c160d75 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: cbc.c,v 1.23 2014/03/23 05:06:42 dholland Exp $        */
+/*     $NetBSD: cbc.c,v 1.24 2016/02/01 17:34:00 christos Exp $        */
 
 /* cbc.c: This file contains the encryption routines for the ed line editor */
 /*-
@@ -72,7 +72,7 @@
 #if 0
 static char *rcsid = "@(#)cbc.c,v 1.2 1994/02/01 00:34:36 alm Exp";
 #else
-__RCSID("$NetBSD: cbc.c,v 1.23 2014/03/23 05:06:42 dholland Exp $");
+__RCSID("$NetBSD: cbc.c,v 1.24 2016/02/01 17:34:00 christos Exp $");
 #endif
 #endif /* not lint */
 
@@ -303,7 +303,7 @@ expand_des_key(char *obuf /* bit pattern */, char *inbuf /* the key itself */)
                /*
                 * now translate it, bombing on any illegal hex digit
                 */
-               for (i = 0; inbuf[i] && i < 16; i++)
+               for (i = 0; i < 16 && inbuf[i]; i++)
                        if ((nbuf[i] = hex_to_binary((int) inbuf[i], 16)) == -1)
                                des_error("bad hex digit in key");
                while (i < 16)
@@ -323,7 +323,7 @@ expand_des_key(char *obuf /* bit pattern */, char *inbuf /* the key itself */)
                /*
                 * now translate it, bombing on any illegal binary digit
                 */
-               for (i = 0; inbuf[i] && i < 16; i++)
+               for (i = 0; i < 16 && inbuf[i]; i++)
                        if ((nbuf[i] = hex_to_binary((int) inbuf[i], 2)) == -1)
                                des_error("bad binary digit in key");
                while (i < 64)
index c39e91baf99f6a152f6f3f208f626952c9b1aa3c..c459197b3f9eade5d465e7b86c77657d9182be73 100644 (file)
@@ -1,4 +1,4 @@
-.\"    $NetBSD: ed.1,v 1.30 2010/05/14 02:09:58 joerg Exp $
+.\"    $NetBSD: ed.1,v 1.30.40.1 2018/04/08 06:04:08 snj Exp $
 .\"    $OpenBSD: ed.1,v 1.42 2003/07/27 13:25:43 jmc Exp $
 .\"
 .\" Copyright (c) 1993 Andrew Moore, Talke Studio.
@@ -25,7 +25,7 @@
 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 .\" SUCH DAMAGE.
 .\"
-.Dd January 23, 2002
+.Dd April 5, 2018
 .Dt ED 1
 .Os
 .Sh NAME
@@ -34,7 +34,7 @@
 .Sh SYNOPSIS
 .Nm
 .Op Fl
-.Op Fl Esx
+.Op Fl ESsx
 .Op Fl p Ar string
 .Op Ar file
 .Sh DESCRIPTION
@@ -130,6 +130,12 @@ option (deprecated).
 .It Fl E
 Enables the use of extended regular expressions instead of the basic
 regular expressions that are normally used.
+.It Fl S
+Disables using of the
+.Dq !
+command (execuring a subshell).
+Intended to be used by batch jobs like
+.Xr patch 1 .
 .It Fl p Ar string
 Specifies a command prompt.
 This may be toggled on and off with the
@@ -955,6 +961,7 @@ but any changes to the buffer are lost.
 .Xr sed 1 ,
 .Xr sh 1 ,
 .Xr vi 1 ,
+.Xr patch 1 ,
 .Xr regex 3
 .Pp
 USD:09-10
index 126d10be7bb03ea7809feeb80d8f82336121cc6c..aa6801e2b14c982484f1124354ecae6952d84756 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: main.c,v 1.27 2014/03/31 12:55:46 christos Exp $       */
+/*     $NetBSD: main.c,v 1.28.8.2 2018/06/22 10:08:22 martin Exp $     */
 
 /* main.c: This file contains the main control and user-interface routines
    for the ed line editor. */
@@ -39,7 +39,7 @@ __COPYRIGHT(
 #if 0
 static char *rcsid = "@(#)main.c,v 1.1 1994/02/01 00:34:42 alm Exp";
 #else
-__RCSID("$NetBSD: main.c,v 1.27 2014/03/31 12:55:46 christos Exp $");
+__RCSID("$NetBSD: main.c,v 1.28.8.2 2018/06/22 10:08:22 martin Exp $");
 #endif
 #endif /* not lint */
 
@@ -94,6 +94,7 @@ int mutex = 0;                        /* if set, signals set "sigflags" */
 int red = 0;                   /* if set, restrict shell/directory access */
 int ere = 0;                   /* if set, use extended regexes */
 int scripted = 0;              /* if set, suppress diagnostics */
+int secure = 0;                        /* is set, ! is not allowed */
 int sigflags = 0;              /* if set, signals received while mutex set */
 int sigactive = 0;             /* if set, signal handlers are enabled */
 
@@ -105,7 +106,7 @@ const char *prompt;                 /* command-line prompt */
 const char *dps = "*";         /* default command-line prompt */
 
 
-static const char usage[] = "Usage: %s [-] [-sxE] [-p string] [name]\n";
+static const char usage[] = "Usage: %s [-] [-ESsx] [-p string] [name]\n";
 
 /* ed: line editor */
 int
@@ -118,7 +119,7 @@ main(int ac, char *av[])
 
        red = (n = strlen(argv[0])) > 2 && argv[0][n - 3] == 'r';
 top:
-       while ((c = getopt(argc, argv, "p:sxE")) != -1)
+       while ((c = getopt(argc, argv, "p:sxES")) != -1)
                switch(c) {
                case 'p':                               /* set prompt */
                        prompt = optarg;
@@ -137,6 +138,9 @@ top:
                case 'E':
                        ere = REG_EXTENDED;
                        break;
+               case 'S':                               /* ! is not allowed */
+                       secure = 1;
+                       break;
                default:
                        fprintf(stderr, usage, getprogname());
                        exit(1);
@@ -223,11 +227,14 @@ top:
                }
                isglobal = 0;
                if ((status = extract_addr_range()) >= 0 &&
-                   (status = exec_command()) >= 0)
-                       if (!status || (status &&
-                           (status = display_lines(current_addr, current_addr,
-                               status)) >= 0))
+                   (status = exec_command()) >= 0) {
+                       if (status == 0)
+                               continue;
+                       status = display_lines(current_addr, current_addr,
+                           status);
+                       if (status >= 0)
                                continue;
+               }
                switch (status) {
                case EOF:
                        quit(0);
@@ -861,7 +868,8 @@ exec_command(void)
                if (addr_cnt > 0) {
                        seterrmsg("unexpected address");
                        return ERR;
-               } else if ((sflags = get_shell_command()) < 0)
+               }
+               if ((sflags = get_shell_command()) < 0)
                        return ERR;
                GET_COMMAND_SUFFIX();
                if (sflags) printf("%s\n", shcmd + 1);
@@ -983,7 +991,7 @@ get_shell_command(void)
        int i = 0;
        int j = 0;
 
-       if (red) {
+       if (red || secure) {
                seterrmsg("shell access restricted");
                return ERR;
        } else if ((s = ibufp = get_extended_line(&j, 1)) == NULL)