summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAmadeusz Sławiński <amade@asmblr.net>2016-09-10 12:02:34 +0200
committerAmadeusz Sławiński <amade@asmblr.net>2016-09-10 12:06:34 +0200
commitf3a12f015766becab73d88c5d5c4720c86e14987 (patch)
treed1c8226727d7c7d47d2dbd50ca0daf83f1936263
parentcfdbd4e751a98ac84064fbf50c13751bcdc6f7d7 (diff)
downloadscreen-f3a12f015766becab73d88c5d5c4720c86e14987.tar.gz
fix crash with long $TERM
screen-4.4.0 built from source using -D_FORTIFY_SOURCE=1 on Fedora 24 crashes when a new window is created using the -T parameter and a sufficiently long string. https://bugzilla.redhat.com/show_bug.cgi?id=1350549 Reported-by: Ricardo Garcia Bug: 48983
-rw-r--r--src/window.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/window.c b/src/window.c
index b3733b4..2d16d57 100644
--- a/src/window.c
+++ b/src/window.c
@@ -1206,7 +1206,7 @@ struct win *win;
char **args, *ttyn;
{
int pid;
- char tebuf[25];
+ char tebuf[MAXTERMLEN + 5 + 1]; /* MAXTERMLEN + strlen("TERM=") + '\0' */
char ebuf[20];
char shellbuf[7 + MAXPATHLEN];
char *proc;
@@ -1442,7 +1442,7 @@ char **args, *ttyn;
{
char *s1, *s2, tl;
- sprintf(tebuf, "TERM=%s", win->w_term);
+ snprintf(tebuf, sizeof(tebuf), "TERM=%s", win->w_term);
debug2("Makewindow %d with %s\n", win->w_number, tebuf);
tl = strlen(win->w_term);
NewEnv[1] = tebuf;
@@ -1458,7 +1458,7 @@ char **args, *ttyn;
}
}
}
- sprintf(ebuf, "WINDOW=%d", win->w_number);
+ snprintf(ebuf, sizeof(ebuf), "WINDOW=%d", win->w_number);
NewEnv[3] = ebuf;
if (*proc == '-')