From a0c256c1f0129ee6eb0d00f385e98da9b28d94c1 Mon Sep 17 00:00:00 2001 From: Serge Vakulenko Date: Sun, 17 Feb 2019 14:24:26 -0800 Subject: [PATCH] Virus editor crashed when colon command line exceeded 4 bytes. Fixed issue #79. --- src/cmd/virus/virus.c | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/src/cmd/virus/virus.c b/src/cmd/virus/virus.c index 5d9d126..9696c5a 100644 --- a/src/cmd/virus/virus.c +++ b/src/cmd/virus/virus.c @@ -67,7 +67,6 @@ char *vi_Version = #include #include #include -//#include #include #include #include @@ -81,12 +80,17 @@ char *vi_Version = #include #include #include -//#include #include #include "lib/last_char_is.c" -#include "lib/strlcat.c" -#include "lib/strlcpy.c" +#if defined(linux) || defined(__APPLE__) +# include +# include +#else +# include "lib/strlcat.c" +# include "lib/strlcpy.c" +# define termios sgttyb +#endif #include @@ -96,7 +100,6 @@ char *vi_Version = #endif /* TRUE */ #define MAX_SCR_COLS BUFSIZ #define BUFSIZ_STATBUF 200 -#define termios sgttyb // Misc. non-Ascii keys that report an escape sequence #define VI_K_UP 128 // cursor key Up @@ -1789,7 +1792,8 @@ static void colon(Byte * buf) while (isblnk(*buf)) buf++; /* FIXED strcpy((char *) args, (char *) buf); */ - if (strlcpy((char *) args, (char *) buf, sizeof((char *)args)) > sizeof((char *)args)) err(1, "strlcpy overflow in function colon"); + if (strlcpy((char *) args, (char *) buf, sizeof(args)) > sizeof(args)) + err(1, "strlcpy overflow in function colon"); buf1 = (Byte *)last_char_is((char *)cmd, '!'); if (buf1) { useforce = TRUE; @@ -3183,7 +3187,7 @@ static int isblnk(Byte c) // is the char a blank or tab //----- Set terminal attributes -------------------------------- static void rawmode(void) { -#if 0 +#ifdef TCSANOW tcgetattr(0, &term_orig); term_vi = term_orig; term_vi.c_lflag &= (~ICANON & ~ECHO); // leave ISIG ON- allow intr's @@ -3208,7 +3212,7 @@ static void rawmode(void) static void cookmode(void) { -#if 0 +#ifdef TCSANOW tcsetattr(0, TCSANOW, &term_orig); #else ioctl(0, TIOCSETP, &term_orig);