1
1

* direntry.c (vfs_s_get_line): Fix off-by-one buffer overflow.

Этот коммит содержится в:
Pavel Roskin 2002-08-20 01:08:34 +00:00
родитель 9a36e62af2
Коммит 1c411834a8
2 изменённых файлов: 5 добавлений и 1 удалений

Просмотреть файл

@ -1,5 +1,7 @@
2002-08-19 Pavel Roskin <proski@gnu.org>
* direntry.c (vfs_s_get_line): Fix off-by-one buffer overflow.
* fish.c (pipeopen): Use _exit(), not vfs_die() to terminate the
child if execvp() fails.

Просмотреть файл

@ -1134,7 +1134,7 @@ vfs_s_get_line (vfs *me, int sock, char *buf, int buf_len, char term)
int i, status;
char c;
for (i = 0; i < buf_len; i++, buf++){
for (i = 0; i < buf_len - 1; i++, buf++){
if (read (sock, buf, sizeof(char)) <= 0)
return 0;
if (logfile){
@ -1146,6 +1146,8 @@ vfs_s_get_line (vfs *me, int sock, char *buf, int buf_len, char term)
return 1;
}
}
/* Line is too long - terminate buffer and discard the rest of line */
*buf = 0;
while ((status = read (sock, &c, sizeof (c))) > 0){
if (logfile){