From a85a87a574016f0c27915192e9cbfd9bbd65ba1a Mon Sep 17 00:00:00 2001 From: Witold Filipczyk Date: Mon, 12 May 2008 11:37:48 +0200 Subject: [PATCH] 1008: abort connection when opening a big file fails. --- src/protocol/file/cgi.c | 6 ++++++ src/protocol/http/http.c | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/src/protocol/file/cgi.c b/src/protocol/file/cgi.c index 986513c57..65d5a4f78 100644 --- a/src/protocol/file/cgi.c +++ b/src/protocol/file/cgi.c @@ -137,6 +137,12 @@ send_big_files(struct socket *socket) *end = '\0'; conn->post_fd = open(big_file + 1, O_RDONLY); *end = BIG_FILE_CHAR; + if (conn->post_fd < 0) { + done_string(&data); + /* FIXME: proper error code */ + abort_connection(conn, S_OUT_OF_MEM); + return; + } http->post_data = end + 1; socket->state = SOCKET_END_ONCLOSE; write_to_socket(socket, data.source, data.length, S_TRANS, diff --git a/src/protocol/http/http.c b/src/protocol/http/http.c index 1530b19de..c485ba29f 100644 --- a/src/protocol/http/http.c +++ b/src/protocol/http/http.c @@ -667,6 +667,12 @@ send_big_files(struct socket *socket) *end = '\0'; conn->post_fd = open(big_file + 1, O_RDONLY); *end = BIG_FILE_CHAR; + if (conn->post_fd < 0) { + done_string(&data); + /* FIXME: proper error code */ + http_end_request(conn, S_OUT_OF_MEM, 0); + return; + } http->post_data = end + 1; socket->state = SOCKET_END_ONCLOSE; http->uploaded += data.length;