Could someone explain why isn't it an issue that socat hardcodes any `p` at all? I mean, isn't the negotiation insecure if the person who generated `p` eavesdrops on the connection?
Edit: stupid post - just realised p was supposed to be prime, which kind of is the answer (no factors)
Because generating p on the fly is expensive. On the other hand, using a safe prime is fine, even if it was generated by a third party.