[Libwebsockets] compile warning - undefined function

Jaco Kroon jaco at uls.co.za
Sun Mar 15 20:15:02 CET 2020


Hi Andy,

On 2020/03/13 18:57, Andy Green wrote:
>
>
> On 3/13/20 4:49 PM, Jaco Kroon wrote:
>> Hi Andy,
>>
>> https://bugs.gentoo.org/709508 relates.
>>
>> /var/tmp/portage/net-libs/libwebsockets-3.2.1/work/libwebsockets-3.2.1/lib/tls/openssl/lws-genec.c:
>> In function ‘BN_bn2binpad’:
>> /var/tmp/portage/net-libs/libwebsockets-3.2.1/work/libwebsockets-3.2.1/lib/tls/openssl/lws-genec.c:61:5:
>> error: implicit declaration of function ‘bn_check_top’
>> [-Werror=implicit-function-declaration]
>>     61 |     bn_check_top(a);
>>        |     ^~~~~~~~~~~~
>> cc1: all warnings being treated as errors
>> ninja: build stopped: subcommand failed.
>>
>> I dug through my system quickly and honestly I'm not sure what the
>> best way forward here is.
>
> This is almost always due to not running, or problems with, the cmake
> part of building lws.  There's definitely no problem building it on
> 1.1.1d on any platform.
OK.
>
>> Looks like bn_check_top is a #define in older versions of OpenSSL.  I
>> can confirm it was in openssl 1.0.1 but no longer in 1.1.1d.
>>
>> Even then it looks like it was a no-op, as in:
>>
>> #define b_check_top(a)
>>
>> Unless BN_DEBUG is defined before including.
>>
>> So may be OK so simply drop that line completely?
>>
>> Alternatively, perhaps wrap the line in #ifdef bn_check_top ...
>
> Mmm if you look at the actual code it's like this
>
> #if !defined(LWS_HAVE_BN_bn2binpad)
> int BN_bn2binpad(const BIGNUM *a, unsigned char *to, int tolen)
> {
>     int i;
>     BN_ULONG l;
>
>     bn_check_top(a);
>
> ie, it's already wrapped with LWS_HAVE_BN_bn2binpad... 1.1.1d has its
> own bn2binpad, which cmake looks for
>
Yea.  And because I'm using openssl 1.1.1d and the user of the system
reporting the bug is using libressl ... *boom*.

Anyway, I've reverted to Gentoo's libressl guys, hopefully they'll let
us know what needs to happen, might end being:

+#ifdef bn_check_top
     bn_check_top(a)
+#endif

I'm assuming you'll object to that?  Or do you perhaps have some other
alternative suggestion?

Kind Regards,
Jaco



More information about the Libwebsockets mailing list