
FSRendezvousServer::PublishRx और ConsumeTx में use-after-free रेस का विश्लेषण, जहाँ Close() म्यूटेक्स रिलीज़ और लॉक एक्विज़िशन के बीच एक FSStreamReg ऑब्जेक्ट को मुक्त कर सकता है।
FSRendezvousServer::PublishRx और FSRendezvousServer::ConsumeTx एक समान, टूटे हुए पैटर्न के साथ एक FSStreamReg ऑब्जेक्ट को डीरेफ़रेंस करते हैं: सर्वर म्यूटेक्स लें, पुष्टि करें कि ऑब्जेक्ट अभी भी सूची में मौजूद है, म्यूटेक्स छोड़ें, फिर ऑब्जेक्ट का अपना लॉक लें — बीच में इसे जीवित रखने के लिए कुछ भी नहीं है।
चूँकि कोई संदर्भ नहीं लिया जाता, सर्वर म्यूटेक्स के जारी होने और ऑब्जेक्ट का अपना लॉक लिए जाने के बीच एक संकीर्ण विंडो होती है, जिसके दौरान FSRendezvousServer::Close() ऑब्जेक्ट को मुक्त कर सकता है, जिससे use-after-free होता है।
श्रेय: @zoverin