X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Fencode_server.cc;h=036ea58a5df92b94cb5cde24e6a7666be195f3a4;hb=HEAD;hp=24ba5bc451449bc59ab63d2c71d8ed182eb56a13;hpb=7bc2134d658778e04f1756c255e604b4ab5a5831;p=dcpomatic.git diff --git a/src/lib/encode_server.cc b/src/lib/encode_server.cc index 24ba5bc45..036ea58a5 100644 --- a/src/lib/encode_server.cc +++ b/src/lib/encode_server.cc @@ -25,25 +25,25 @@ */ -#include "encode_server.h" -#include "util.h" -#include "dcpomatic_socket.h" -#include "image.h" -#include "dcp_video.h" +#include "compose.hpp" #include "config.h" +#include "constants.h" #include "cross.h" -#include "player_video.h" -#include "compose.hpp" -#include "log.h" +#include "dcp_video.h" #include "dcpomatic_log.h" +#include "dcpomatic_socket.h" +#include "encode_server.h" #include "encoded_log_entry.h" +#include "image.h" +#include "log.h" +#include "player_video.h" #include "version.h" -#include "warnings.h" #include +#include #include -DCPOMATIC_DISABLE_WARNINGS +LIBDCP_DISABLE_WARNINGS #include -DCPOMATIC_ENABLE_WARNINGS +LIBDCP_ENABLE_WARNINGS #include #include #ifdef HAVE_VALGRIND_H @@ -126,6 +126,10 @@ EncodeServer::process (shared_ptr socket, struct timeval& after_read, st Socket::ReadDigestScope ds (socket); auto length = socket->read_uint32 (); + if (length > 65536) { + throw NetworkError("Malformed encode request (too large)"); + } + scoped_array buffer (new char[length]); socket->read (reinterpret_cast(buffer.get()), length); @@ -336,8 +340,7 @@ EncodeServer::handle (shared_ptr socket) { boost::mutex::scoped_lock lock (_mutex); - Waker waker; - waker.nudge (); + _waker.nudge (); /* Wait until the queue has gone down a bit */ while (_queue.size() >= _worker_threads.size() * 2 && !_terminate) {