3 ms·
As much as the default behaviour is questionable, I don't fully agree with the assessment: this is in fact a curl documentation problem. As a multi-protocol li
by chucke 3y ago
As much as the default behaviour is questionable, I don't fully agree with the assessment: this is in fact a curl documentation problem.
As a multi-protocol lib, curl does not in fact implement all of them directly, instead relying on transitive dependencies which act as "backends" to outsource, in most cases, decoding the low-level bits. For some of the protocols, and for good reason, it incorporates support for multiple alternative libraries.
The downside of that approach is that it is hard, if not impossible, to ensure common behaviour across independent backends which may not cover all of the same features, provide incomplete APIs, or, such as in this case do not provide a way to patch some of its default behaviour. Libressl is not a bit-for-bit reimplementation of openssl, and are under no obligation to mimic its API fully (however convenient that would be for us all).
In such cases, and given the reluctance of upstream to fix it, curl is left with 2 possibilities: drop support for said library, or document the quirk. Given the downside of breaking user code of following the former, it should at least do the latter.
All this being said, I do agree with the main sentiment that this is a flawed approach from a security standpoint of libressl, and there's probably reason to open a CVE, but it should be on libressl.
- Karellen 3y agoThe thing I'm not quite getting is how building curl from sources apparently gets around the issue, if the root cause is in the system ssl library?
- throwitaway1123 3y agoThe user who submitted the bug report was using Homebrew, which does not build curl with the system version of OpenSSL: https://github.com/Homebrew/homebrew-core/blob/547d6bb9b289c8e7c260b380cc83ddc200fadd03/Formula/c/curl.rb#L58 https://github.com/Homebrew/homebrew-core/blob/547d6bb9b289c...