summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/libterm/termcap.c18
-rw-r--r--lib/libtermlib/getterm.c30
2 files changed, 28 insertions, 20 deletions
diff --git a/lib/libterm/termcap.c b/lib/libterm/termcap.c
index 8e11888836b..391963045e7 100644
--- a/lib/libterm/termcap.c
+++ b/lib/libterm/termcap.c
@@ -80,7 +80,7 @@ tgetent(bp, name)
char **fname;
char *home;
int i;
- char pathbuf[PBUFSIZ]; /* holds raw path of filenames */
+ char pathbuf[PBUFSIZ+1]; /* holds raw path of filenames */
char *pathvec[PVECSIZ]; /* to point to names in pathbuf */
char **pvec; /* holds usable tail of path vector */
char *termpath;
@@ -102,21 +102,25 @@ tgetent(bp, name)
*/
if (!cp || *cp != '/') { /* no TERMCAP or it holds an entry */
if ((termpath = getenv("TERMPATH")) != NULL)
- strncpy(pathbuf, termpath, PBUFSIZ);
+ strncpy(pathbuf, termpath, sizeof(pathbuf) - 1);
else {
if ((home = getenv("HOME")) != NULL) {
/* set up default */
- strncpy(pathbuf, home, PBUFSIZ - strlen(_PATH_DEF) - 1); /* $HOME first */
- pathbuf[PBUFSIZ - strlen(_PATH_DEF) - 1] = '\0';
+ /* $HOME first */
+ strncpy(pathbuf, home, sizeof(pathbuf) - 1 -
+ strlen(_PATH_DEF) - 1);
+ pathbuf[sizeof(pathbuf) - 1 -
+ strlen(_PATH_DEF) - 1] = '\0';
p += strlen(pathbuf); /* path, looking in */
*p++ = '/';
} /* if no $HOME look in current directory */
- strncpy(p, _PATH_DEF, PBUFSIZ - (p - pathbuf));
+ strncpy(p, _PATH_DEF, sizeof(pathbuf) -1 -
+ (p - pathbuf));
}
}
else /* user-defined name in TERMCAP */
- strncpy(pathbuf, cp, PBUFSIZ); /* still can be tokenized */
- pathbuf[PBUFSIZ] = '\0';
+ strncpy(pathbuf, cp, sizeof(pathbuf) - 1); /* still can be tokenized */
+ pathbuf[sizeof(pathbuf) - 1] = '\0';
*fname++ = pathbuf; /* tokenize path into vector of names */
while (*++p)
diff --git a/lib/libtermlib/getterm.c b/lib/libtermlib/getterm.c
index 80e85042c0c..f0ea6d83099 100644
--- a/lib/libtermlib/getterm.c
+++ b/lib/libtermlib/getterm.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: getterm.c,v 1.10 1996/09/03 05:11:11 tholo Exp $ */
+/* $OpenBSD: getterm.c,v 1.11 1996/09/03 16:04:57 deraadt Exp $ */
/*
* Copyright (c) 1996 SigmaSoft, Th. Lockert <tholo@sigmasoft.com>
@@ -31,7 +31,7 @@
*/
#ifndef lint
-static char rcsid[] = "$OpenBSD: getterm.c,v 1.10 1996/09/03 05:11:11 tholo Exp $";
+static char rcsid[] = "$OpenBSD: getterm.c,v 1.11 1996/09/03 16:04:57 deraadt Exp $";
#endif
#include <stdlib.h>
@@ -98,21 +98,23 @@ _ti_gettermcap(name)
*/
if (!cp || *cp != '/') { /* no TERMCAP or it holds an entry */
if ((termpath = getenv("TERMPATH")) != NULL)
- strncpy(pathbuf, termpath, MAXPATHLEN);
+ strncpy(pathbuf, termpath, sizeof(pathbuf)-1);
else {
if ((home = getenv("HOME")) != NULL) {
/* set up default */
- strncpy(pathbuf, home, MAXPATHLEN - strlen(_PATH_CAPDEF) - 1); /* $HOME first */
- pathbuf[MAXPATHLEN - strlen(_PATH_CAPDEF) - 1] = '\0';
+ /* $HOME first */
+ strncpy(pathbuf, home, sizeof(pathbuf) - 1 -
+ strlen(_PATH_CAPDEF) - 1);
+ pathbuf[sizeof(pathbuf) - 1 - strlen(_PATH_CAPDEF) - 1] = '\0';
p += strlen(pathbuf); /* path, looking in */
*p++ = '/';
} /* if no $HOME look in current directory */
- strncpy(p, _PATH_CAPDEF, MAXPATHLEN - (p - pathbuf));
+ strncpy(p, _PATH_CAPDEF, sizeof(pathbuf) - 1 - (p - pathbuf));
}
}
else /* user-defined name in TERMCAP */
- strncpy(pathbuf, cp, MAXPATHLEN); /* still can be tokenized */
- pathbuf[MAXPATHLEN] = '\0';
+ strncpy(pathbuf, cp, sizeof(pathbuf)-1); /* still can be tokenized */
+ pathbuf[sizeof(pathbuf)-1] = '\0';
*fname++ = pathbuf; /* tokenize path into vector of names */
while (*++p)
@@ -244,18 +246,20 @@ _ti_getterminfo(name)
* TERMINFO exists.
*/
if ((termpath = getenv("TERMINFO")) != NULL)
- strncpy(pathbuf, termpath, MAXPATHLEN);
+ strncpy(pathbuf, termpath, sizeof(pathbuf) - 1);
else {
if ((home = getenv("HOME")) != NULL) {
/* set up default */
+ /* $HOME first */
+ strncpy(pathbuf, home, sizeof(pathbuf) - 1 -
+ strlen(_PATH_INFODEF) - 1);
+ pathbuf[sizeof(pathbuf) - 1 - strlen(_PATH_INFODEF) - 1] = '\0';
p += strlen(home); /* path, looking in */
- strncpy(pathbuf, home, MAXPATHLEN - strlen(_PATH_INFODEF) - 1); /* $HOME first */
- pathbuf[MAXPATHLEN - strlen(_PATH_INFODEF) - 1] = '\0';
*p++ = '/';
} /* if no $HOME look in current directory */
- strncpy(p, _PATH_INFODEF, MAXPATHLEN - (p - pathbuf));
+ strncpy(p, _PATH_INFODEF, sizeof(pathbuf) - 1 - (p - pathbuf));
}
- pathbuf[MAXPATHLEN] = '\0';
+ pathbuf[sizeof(pathbuf) - 1] = '\0';
*fname++ = pathbuf; /* tokenize path into vector of names */
while (*++p)