The vulnerability is a denial-of-service in the resolv gem, caused by insufficient validation of the length of a decompressed domain name from a DNS packet. The analysis of the patch commit 4c2f71b5e80826506f78417d85b38481c058fb25 reveals the exact location of the vulnerability.
The core of the issue lies within the get_labels method of the private MessageDecoder class, which is used by Resolv::DNS::Message. This method was modified to add a size check (size += 1 + l.string.bytesize) and a validation (raise DecodeError.new("name label data exceed 255 octets") if size > 255) that was previously missing. This allowed a crafted DNS packet with a highly compressed domain name to cause excessive CPU usage during decompression.
The public-facing method that triggers this vulnerable logic is Resolv::DNS::Message.decode, as confirmed by the new test case test_too_long_address added in the patch. This test explicitly calls Resolv::DNS::Message.decode with a malicious payload to ensure the fix works as expected.
Therefore, during exploitation, a runtime profiler would show Resolv::DNS::Message.decode as the entry point, which in turn calls the vulnerable get_labels method (and get_label within it) in a loop, leading to the denial of service. All three functions are key indicators of this vulnerability being triggered.