X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Fencode_server.cc;h=036ea58a5df92b94cb5cde24e6a7666be195f3a4;hb=913bb4e71f287ec7fc050ba5bcf12e3fae26ecfa;hp=d326c767be226aa240255504354a4ae08a33ef75;hpb=3c29aa6531a4046a8db72dcac81189eb8893233c;p=dcpomatic.git diff --git a/src/lib/encode_server.cc b/src/lib/encode_server.cc index d326c767b..036ea58a5 100644 --- a/src/lib/encode_server.cc +++ b/src/lib/encode_server.cc @@ -25,18 +25,18 @@ */ -#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 #include @@ -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);