Fix extension length counter in client hello parsing.
[folly.git] / folly / io / async / AsyncSSLSocket.cpp
index b398e31c8bc85aeb618fdf979c88d4463250b668..721fb29510f1f827eb25b5c16928e1a84732ff48 100644 (file)
@@ -1651,6 +1651,7 @@ void AsyncSSLSocket::clientHelloParsingCallback(int written,
         extensionsLength -= 2;
         uint16_t extensionDataLength = cursor.readBE<uint16_t>();
         extensionsLength -= 2;
+        extensionsLength -= extensionDataLength;
 
         if (extensionType == ssl::TLSExtension::SIGNATURE_ALGORITHMS) {
           cursor.skip(2);
@@ -1666,7 +1667,6 @@ void AsyncSSLSocket::clientHelloParsingCallback(int written,
           }
         } else {
           cursor.skip(extensionDataLength);
-          extensionsLength -= extensionDataLength;
         }
       }
     }