diff -uprk.orig slang-1.4.7.orig/src/slimport.c slang-1.4.7/src/slimport.c --- slang-1.4.7.orig/src/slimport.c 2002-12-09 07:18:54 +0300 +++ slang-1.4.7/src/slimport.c 2002-12-29 20:48:35 +0300 @@ -134,7 +134,7 @@ static int import_from_library (char *na * errors. There is nothing that I can do about that.... */ if ((NULL == strchr (file, '/')) - && (strlen(file) < sizeof(filebuf))) + && (strlen(file) < sizeof(filebuf) - 2)) { err = (char *) dlerror (); if (err != NULL) @@ -218,8 +218,8 @@ static void import_module (void) if (-1 == SLang_pop_slstring (&ns)) return; } - - if (-1 == SLang_pop_slstring (&module)) + + if (-1 == SLang_pop_slstring (&module) || strlen (module) > 240) { SLang_free_slstring (ns); /* NULL ok */ return; diff -uprk.orig slang-1.4.7.orig/src/slmisc.c slang-1.4.7/src/slmisc.c --- slang-1.4.7.orig/src/slmisc.c 2002-12-09 07:18:54 +0300 +++ slang-1.4.7/src/slmisc.c 2002-12-29 20:02:28 +0300 @@ -237,6 +237,7 @@ int SLextract_list_element (char *list, } #ifndef HAVE_VSNPRINTF +#error vsnprintf() not detected int _SLvsnprintf (char *buf, unsigned int buflen, char *fmt, va_list ap) { #if 1 @@ -273,6 +274,7 @@ The integrity of this program has been v #endif #ifndef HAVE_SNPRINTF +#error snprintf() not detected int _SLsnprintf (char *buf, unsigned int buflen, char *fmt, ...) { int status; diff -uprk.orig slang-1.4.7.orig/src/sltermin.c slang-1.4.7/src/sltermin.c --- slang-1.4.7.orig/src/sltermin.c 2002-12-09 07:18:54 +0300 +++ slang-1.4.7/src/sltermin.c 2002-12-29 20:51:43 +0300 @@ -271,8 +271,8 @@ SLterminfo_Type *_SLtt_tigetent (char *t if (NULL != (home = _SLsecure_getenv ("HOME"))) { - strncpy (home_ti, home, sizeof (home_ti) - 11); - home_ti [sizeof(home_ti) - 11] = 0; + home_ti[0] = '\0'; + strncat (home_ti, home, sizeof (home_ti) - 11); strcat (home_ti, "/.terminfo"); Terminfo_Dirs [0] = home_ti; } @@ -1004,7 +1004,7 @@ static int tcap_getent (char *term, SLte if (!strncmp (term, "xterm", 5)) return -1; #endif - termcap = (unsigned char *) getenv ("TERMCAP"); + termcap = (unsigned char *) _SLsecure_getenv ("TERMCAP"); if ((termcap == NULL) || (*termcap == '/')) return -1; /* SUN Solaris 7&8 have bug in tset program under tcsh,