1
0
mirror of https://github.com/rkd77/elinks.git synced 2024-12-04 14:46:47 -05:00

copiousoutput: Allow read only registered file descriptors.

This commit is contained in:
Witold Filipczyk 2007-03-13 22:39:13 +01:00 committed by Witold Filipczyk
parent 7ab5b8d57e
commit fc2a402059

View File

@ -208,6 +208,7 @@ static void
read_special(struct connection *conn, int fd) read_special(struct connection *conn, int fd)
{ {
struct read_buffer *rb; struct read_buffer *rb;
struct stat sb;
if (!init_http_connection_info(conn, 1, 0, 1)) { if (!init_http_connection_info(conn, 1, 0, 1)) {
abort_connection(conn, S_OUT_OF_MEM); abort_connection(conn, S_OUT_OF_MEM);
@ -219,8 +220,26 @@ read_special(struct connection *conn, int fd)
return; return;
} }
if (fd != STDIN_FILENO) if (fd != STDIN_FILENO) {
conn->popen = 1; struct popen_data *pop;
int found = 0;
foreachback(pop, copiousoutput_data) {
if (pop->fd == fd) {
found = 1;
break;
}
}
if (!found) {
abort_connection(conn, S_OK);
return;
}
}
if (fstat(fd, &sb)) {
abort_connection(conn, -errno);
return;
}
conn->socket->fd = fd; conn->socket->fd = fd;
rb = alloc_read_buffer(conn->socket); rb = alloc_read_buffer(conn->socket);