Bug 26600

Summary: Transaction ID collisions cause slow DNS lookups in getaddrinfo
Product: glibc Reporter: Florian Weimer <fweimer>
Component: networkAssignee: Florian Weimer <fweimer>
Status: RESOLVED FIXED    
Severity: normal CC: fweimer
Priority: P2 Flags: fweimer: security-
Version: 2.33   
Target Milestone: 2.33   
See Also: https://sourceware.org/bugzilla/show_bug.cgi?id=19691
Host: Target:
Build: Last reconfirmed:

Description Florian Weimer 2020-09-11 13:01:21 UTC
If the A and AAAA queries have equal transaction IDs, the initial AAAA response is not recognized as valid, resulting in timeouts and retransmits.
Comment 1 Florian Weimer 2020-09-11 13:02:20 UTC
This bug is distinct from bug 19691 in the sense that it is possible to fix it without reworking the buffer management.
Comment 2 Florian Weimer 2020-09-11 13:05:49 UTC
Patch posted: https://sourceware.org/pipermail/libc-alpha/2020-September/117547.html
Comment 3 Sourceware Commits 2020-10-14 09:34:14 UTC
The master branch has been updated by Florian Weimer <fw@sourceware.org>:

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=f1f00c072138af90ae6da180f260111f09afe7a3

commit f1f00c072138af90ae6da180f260111f09afe7a3
Author: Florian Weimer <fweimer@redhat.com>
Date:   Wed Oct 14 10:54:39 2020 +0200

    resolv: Handle transaction ID collisions in parallel queries (bug 26600)
    
    If the transaction IDs are equal, the old check attributed both
    responses to the first query, not recognizing the second response.
    This fixes bug 26600.
Comment 4 Florian Weimer 2020-10-14 09:34:46 UTC
Fixed for glibc 2.33.
Comment 5 Sourceware Commits 2020-11-10 16:00:06 UTC
The release/2.32/master branch has been updated by Florian Weimer <fw@sourceware.org>:

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=2dfa659a66f20facc4082207884c20e986ddecee

commit 2dfa659a66f20facc4082207884c20e986ddecee
Author: Florian Weimer <fweimer@redhat.com>
Date:   Wed Oct 14 10:54:39 2020 +0200

    resolv: Handle transaction ID collisions in parallel queries (bug 26600)
    
    If the transaction IDs are equal, the old check attributed both
    responses to the first query, not recognizing the second response.
    This fixes bug 26600.
    
    (cherry picked from commit f1f00c072138af90ae6da180f260111f09afe7a3)