Check some unsanitized network inputs before allocating memory using them.
[dcpomatic.git] / src / lib / encode_server_finder.cc
index 3f5cb74f01bddbe659dc2360446d454bdbe06725..1d4ced5951f01315306259a861bf2c5645b94aa5 100644 (file)
@@ -227,6 +227,11 @@ EncodeServerFinder::handle_accept (boost::system::error_code ec)
                _accept_socket->read (reinterpret_cast<uint8_t*>(&length), sizeof(uint32_t));
                length = ntohl (length);
 
+               if (length > 65536) {
+                       start_accept();
+                       return;
+               }
+
                scoped_array<char> buffer(new char[length]);
                _accept_socket->read (reinterpret_cast<uint8_t*>(buffer.get()), length);
                server_available = buffer.get();