Sfoglia il codice sorgente

Add exception when input SSL buffer is overflown. #6

Michał Słomkowski 8 anni fa
parent
commit
4b8fad8263
1 ha cambiato i file con 8 aggiunte e 1 eliminazioni
  1. 8 1
      src/Transport.cpp

+ 8 - 1
src/Transport.cpp

@@ -292,9 +292,16 @@ void mumlib::Transport::doReceiveSsl() {
                 }
 
                 const int payloadSize = ntohl(*reinterpret_cast<uint32_t *>(sslIncomingBuffer + 2));
-                size_t remaining = payloadSize + 6 - bytesTransferred;
+                const int wholeMessageLength = payloadSize + 6;
+                size_t remaining = wholeMessageLength - bytesTransferred;
                 remaining = max(remaining, (size_t) 0);
 
+                if (wholeMessageLength > MAX_TCP_LENGTH) {
+                    throwTransportException(
+                            (boost::format("message bigger (%d B) than max allowed size (%d B)")
+                             % wholeMessageLength % MAX_TCP_LENGTH).str());
+                }
+
                 return remaining;
             },
             [this](const boost::system::error_code &ec, size_t bytesTransferred) {