The vulnerability lies in the C implementation of the HTTP parser in aiohttp. The core issue is that the parser did not correctly enforce the max_line_size limit on request targets and response reason phrases that were split across multiple network reads. The functions cb_on_url and cb_on_status were responsible for processing these parts of an HTTP request/response. The original code only checked the length of the individual fragment being processed against max_line_size. This allowed an attacker to craft a malicious request or response where the total line length far exceeded the limit, but was broken down into smaller chunks that each passed the check. The parser would then accumulate these chunks, leading to uncontrolled memory growth and a potential Denial of Service (DoS) vulnerability. The patch corrects this by checking the sum of the already buffered data and the new fragment's length against max_line_size, ensuring the total length of the line is always enforced.