Explorar o código

Free data when instance is invalid on recv callback

Paul-Louis Ageneau %!s(int64=5) %!d(string=hai) anos
pai
achega
0593566ba6
Modificáronse 1 ficheiros con 3 adicións e 1 borrados
  1. 3 1
      src/sctptransport.cpp

+ 3 - 1
src/sctptransport.cpp

@@ -679,8 +679,10 @@ int SctpTransport::RecvCallback(struct socket *sock, union sctp_sockstore addr,
 	auto *transport = static_cast<SctpTransport *>(ptr);
 
 	std::shared_lock lock(InstancesMutex);
-	if (Instances.find(transport) == Instances.end())
+	if (Instances.find(transport) == Instances.end()) {
+		free(data);
 		return -1;
+	}
 
 	int ret =
 	    transport->handleRecv(sock, addr, static_cast<const byte *>(data), len, recv_info, flags);