Check some unsanitized network inputs before allocating memory using them.
[dcpomatic.git] / src / lib / encode_server.cc
index 6501dcde15bed5b6a5af3d7b5275415370284769..036ea58a5df92b94cb5cde24e6a7666be195f3a4 100644 (file)
@@ -126,6 +126,10 @@ EncodeServer::process (shared_ptr<Socket> 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<char> buffer (new char[length]);
        socket->read (reinterpret_cast<uint8_t*>(buffer.get()), length);