11.11.2016 в 21:30:07 +0100 Jan Niehusmann написал:
> the curl ABI contains structs inherited from OpenSSL, e.g. in calls
> like:
> 
> curl_easy_setopt(easy, CURLOPT_SSL_CTX_FUNCTION, &sslCtxFunction_cb);
> 
> Here, sslCtxFunction_cb is a function which takes an SSL_CTX * as a
> parameter.
> 
> (This is from zurl, one example of a package affected by this bug.)
> 
> Since 7.51.0-1, curl links against OpenSSL 1.1 instead of OpenSSL 1.0
> (implicitly caused by an update of libssl-dev, not by a change to the
> curl package). This changes the structure of SSL_CTX, which in turn
> changes the above mentioned ABI and breaks zurl (and possibly other
> packages).

And libcurl3 in testing links with libssl1.0.2 while libcurl3 in
jessie links with libssl1.0.0.  And while structure of SSL_CTX is
probably identical in this case, global state of libssl is different,
as well as code and supported features are different.

Also, when libcurl is linked with OpenSSL older then 1.1 many
applications need to be linked with the same OpenSSL libraries as curl
as they need to initialize libssl as described in
https://lists.debian.org/debian-devel/2016/11/msg00718.html
With OpenSSL 1.1 this requirement goes away, as newer OpenSSL
initializes itself automatically (and if application initializes old
version of OpenSSL no harm is done).

> Such ABI changes require a SONAME change, according to policy 8.1,
> exactly to avoid breaking other packages which use the library.
> 
> Therefore, please consider changing the SONAME (and the name of the
> binary package). Alternatively, build-depend on libssl1.0-dev, to link
> against OpenSSL 1.0 and keep the old ABI.

If SONAME change is needed it is needed when linking libcurl with
libssl1.0.2 too.  (But when linking libcurl with libssl1.0.2 more
applications are affected due to the need of explicit initialization.)

Reply via email to