diff options
author | imp <imp@FreeBSD.org> | 1997-12-04 02:54:05 +0000 |
---|---|---|
committer | imp <imp@FreeBSD.org> | 1997-12-04 02:54:05 +0000 |
commit | d06debb088318cefea304bdcc695e7a060a6cdd2 (patch) | |
tree | 76b730f5ed1a18d2186767c275039339c5fd67ce /contrib/top | |
parent | c184b142915986a82e72586fbe35f58d11e84a38 (diff) | |
download | FreeBSD-src-d06debb088318cefea304bdcc695e7a060a6cdd2.zip FreeBSD-src-d06debb088318cefea304bdcc695e7a060a6cdd2.tar.gz |
Buffer overflow from bitblt's commit to OpenBSD. Committed here for lack
of a better place to do it.
Reviewed by: joerge
Obtained from: OpenBSD
Diffstat (limited to 'contrib/top')
-rw-r--r-- | contrib/top/screen.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/contrib/top/screen.c b/contrib/top/screen.c index b5d0388..531a4f3 100644 --- a/contrib/top/screen.c +++ b/contrib/top/screen.c @@ -204,7 +204,8 @@ int interactive; PC = (PCptr = tgetstr("pc", &bufptr)) ? *PCptr : 0; /* set convenience strings */ - (void) strcpy(home, tgoto(cursor_motion, 0, 0)); + (void) strncpy(home, tgoto(cursor_motion, 0, 0), sizeof(home) - 1); + home[sizeof(home) - 1] = '\0'; /* (lower_left is set in get_screensize) */ /* get the actual screen size with an ioctl, if needed */ @@ -420,7 +421,9 @@ get_screensize() #endif /* TIOCGSIZE */ #endif /* TIOCGWINSZ */ - (void) strcpy(lower_left, tgoto(cursor_motion, 0, screen_length - 1)); + (void) strncpy(lower_left, tgoto(cursor_motion, 0, screen_length - 1), + sizeof(lower_left) - 1); + lower_left[sizeof(lower_left) - 1] = '\0'; } standout(msg) |