do not register overlapping old DH key exchange messages
|Reported by:||Antoine Pitrou||Owned by:|
|Cc:||z3p, Antoine Pitrou||Branch:||
branch-diff, diff-cov, branch-cov, buildbot
This is tricky. Some legacy SSH messages (MSG_KEXDH_*) have overlapping values with newere ones (MSG_KEX_DH_GEX_*). t.conch.ssh.transport maps all of them by iterating over its own globals. Since the globals are a dict, iteration order is undefined; SSH transports can break nastily if the legacy messages happen to override the newer ones in the mapping, since the former don't have public handlers. Patch attached.