for master branch (I sent travis-ci patch):


sr/include  -DCONFIG_HAPROXY_VERSION=\"2.3-dev6\"
-DCONFIG_HAPROXY_DATE=\"2020/10/10\" -c -o src/ssl_crtlist.o
src/ssl_crtlist.c
src/ssl_crtlist.c: In function ‘ssl_sock_free_ssl_conf’:
src/ssl_crtlist.c:54:12: error: ‘struct ssl_bind_conf’ has no member named
‘ciphersuites’
   54 |   free(conf->ciphersuites);
      |            ^~
src/ssl_crtlist.c:55:7: error: ‘struct ssl_bind_conf’ has no member named
‘ciphersuites’
   55 |   conf->ciphersuites = NULL;
      |       ^~
src/ssl_crtlist.c: In function ‘crtlist_dup_ssl_conf’:
src/ssl_crtlist.c:113:9: error: ‘struct ssl_bind_conf’ has no member named
‘ciphersuites’
  113 |  if (src->ciphersuites) {
      |         ^~
src/ssl_crtlist.c:114:6: error: ‘struct ssl_bind_conf’ has no member named
‘ciphersuites’
  114 |   dst->ciphersuites = strdup(src->ciphersuites);
      |      ^~
src/ssl_crtlist.c:114:33: error: ‘struct ssl_bind_conf’ has no member named
‘ciphersuites’
  114 |   dst->ciphersuites = strdup(src->ciphersuites);
      |                                 ^~
src/ssl_crtlist.c:115:11: error: ‘struct ssl_bind_conf’ has no member named
‘ciphersuites’
  115 |   if (!dst->ciphersuites)
      |           ^~
src/ssl_sock.c:1288:39: error: ‘struct certificate_ocsp’ declared inside
parameter list will not be visible outside of this definition or
declaration [-Werror]
 1288 | static void ssl_sock_free_ocsp(struct certificate_ocsp *ocsp)
      |                                       ^~~~~~~~~~~~~~~~
src/ssl_sock.c: In function ‘ssl_sock_free_ocsp’:
src/ssl_sock.c:1293:6: error: invalid use of undefined type ‘struct
certificate_ocsp’
 1293 |  ocsp->refcount--;
      |      ^~
src/ssl_sock.c:1294:10: error: invalid use of undefined type ‘struct
certificate_ocsp’
 1294 |  if (ocsp->refcount <= 0) {
      |          ^~
src/ssl_sock.c:1295:20: error: invalid use of undefined type ‘struct
certificate_ocsp’
 1295 |   ebmb_delete(&ocsp->key);
      |                    ^~
src/ssl_sock.c:1296:22: error: invalid use of undefined type ‘struct
certificate_ocsp’
 1296 |   chunk_destroy(&ocsp->response);
      |                      ^~
make: *** [Makefile:889: src/ssl_crtlist.o] Error 1
make: *** Waiting for unfinished jobs....
src/ssl_sock.c: In function ‘ssl_sock_prepare_ctx’:
src/ssl_sock.c:4116:43: error: ‘struct ssl_bind_conf’ has no member named
‘ciphersuites’
 4116 |  conf_ciphersuites = (ssl_conf && ssl_conf->ciphersuites) ?
ssl_conf->ciphersuites : bind_conf->ssl_conf.ciphersuites;
      |                                           ^~
src/ssl_sock.c:4116:69: error: ‘struct ssl_bind_conf’ has no member named
‘ciphersuites’
 4116 |  conf_ciphersuites = (ssl_conf && ssl_conf->ciphersuites) ?
ssl_conf->ciphersuites : bind_conf->ssl_conf.ciphersuites;
      |
^~
src/ssl_sock.c:4116:105: error: ‘struct ssl_bind_conf’ has no member named
‘ciphersuites’
 4116 |  conf_ciphersuites = (ssl_conf && ssl_conf->ciphersuites) ?
ssl_conf->ciphersuites : bind_conf->ssl_conf.ciphersuites;
      |
                                    ^
src/ssl_sock.c:4118:7: error: implicit declaration of function
‘SSL_CTX_set_ciphersuites’; did you mean ‘SSL_CTX_set_cipher_list’?
[-Werror=implicit-function-declaration]
 4118 |      !SSL_CTX_set_ciphersuites(ctx, conf_ciphersuites)) {
      |       ^~~~~~~~~~~~~~~~~~~~~~~~
      |       SSL_CTX_set_cipher_list
src/ssl_sock.c: In function ‘ssl_sock_prepare_srv_ctx’:
src/ssl_sock.c:4573:18: error: ‘struct <anonymous>’ has no member named
‘ciphersuites’
 4573 |  if (srv->ssl_ctx.ciphersuites &&
      |                  ^
src/ssl_sock.c:4574:59: error: ‘struct <anonymous>’ has no member named
‘ciphersuites’
 4574 |   !SSL_CTX_set_ciphersuites(srv->ssl_ctx.ctx,
srv->ssl_ctx.ciphersuites)) {
      |                                                           ^
src/ssl_sock.c:4577:49: error: ‘struct <anonymous>’ has no member named
‘ciphersuites’
 4577 |     srv->conf.file, srv->conf.line, srv->ssl_ctx.ciphersuites);
      |                                                 ^
src/ssl_sock.c: In function ‘ssl_sock_init’:
src/ssl_sock.c:5036:4: error: implicit declaration of function
‘SSL_set_max_early_data’; did you mean ‘SSL_in_early_data’?
[-Werror=implicit-function-declaration]
 5036 |    SSL_set_max_early_data(ctx->ssl,
      |    ^~~~~~~~~~~~~~~~~~~~~~
      |    SSL_in_early_data
src/ssl_sock.c: In function ‘ssl_sock_handshake’:
src/ssl_sock.c:5097:10: error: implicit declaration of function
‘SSL_read_early_data’; did you mean ‘SSL_in_early_data’?
[-Werror=implicit-function-declaration]
 5097 |    ret = SSL_read_early_data(ctx->ssl,
      |          ^~~~~~~~~~~~~~~~~~~
      |          SSL_in_early_data
src/ssl_sock.c:5100:15: error: ‘SSL_READ_EARLY_DATA_ERROR’ undeclared
(first use in this function); did you mean ‘SSL_AD_DECRYPT_ERROR’?
 5100 |    if (ret == SSL_READ_EARLY_DATA_ERROR)
      |               ^~~~~~~~~~~~~~~~~~~~~~~~~
      |               SSL_AD_DECRYPT_ERROR
src/ssl_sock.c:5100:15: note: each undeclared identifier is reported only
once for each function it appears in
src/ssl_sock.c:5106:15: error: ‘SSL_READ_EARLY_DATA_FINISH’ undeclared
(first use in this function)
 5106 |    if (ret == SSL_READ_EARLY_DATA_FINISH) {
      |               ^~~~~~~~~~~~~~~~~~~~~~~~~~
src/ssl_sock.c:5302:8: error: implicit declaration of function
‘SSL_get_early_data_status’; did you mean ‘SSL_get_early_data_reason’?
[-Werror=implicit-function-declaration]
 5302 |    if (SSL_get_early_data_status(ctx->ssl) ==
SSL_EARLY_DATA_REJECTED) {
      |        ^~~~~~~~~~~~~~~~~~~~~~~~~
      |        SSL_get_early_data_reason
src/ssl_sock.c:5302:47: error: ‘SSL_EARLY_DATA_REJECTED’ undeclared (first
use in this function); did you mean ‘SSL_ERROR_EARLY_DATA_REJECTED’?
 5302 |    if (SSL_get_early_data_status(ctx->ssl) ==
SSL_EARLY_DATA_REJECTED) {
      |
^~~~~~~~~~~~~~~~~~~~~~~
      |
SSL_ERROR_EARLY_DATA_REJECTED
src/ssl_sock.c: In function ‘ssl_sock_from_buf’:
src/ssl_sock.c:5714:17: error: implicit declaration of function
‘SSL_get_max_early_data’; did you mean ‘SSL_in_early_data’?
[-Werror=implicit-function-declaration]
 5714 |     max_early = SSL_get_max_early_data(ctx->ssl);
      |                 ^~~~~~~~~~~~~~~~~~~~~~
      |                 SSL_in_early_data
src/ssl_sock.c:5717:18: error: implicit declaration of function
‘SSL_SESSION_get_max_early_data’; did you mean ‘SSL_SESSION_get_ex_data’?
[-Werror=implicit-function-declaration]
 5717 |      max_early =
SSL_SESSION_get_max_early_data(SSL_get0_session(ctx->ssl));
      |                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                  SSL_SESSION_get_ex_data
src/ssl_sock.c:5730:10: error: implicit declaration of function
‘SSL_write_early_data’; did you mean ‘SSL_in_early_data’?
[-Werror=implicit-function-declaration]
 5730 |    ret = SSL_write_early_data(ctx->ssl, b_peek(buf, done), try,
&written_data);
      |          ^~~~~~~~~~~~~~~~~~~~
      |          SSL_in_early_data
At top level:
src/ssl_sock.c:1288:13: error: ‘ssl_sock_free_ocsp’ defined but not used
[-Werror=unused-function]
 1288 | static void ssl_sock_free_ocsp(struct certificate_ocsp *ocsp)
      |             ^~~~~~~~~~~~~~~~~~
cc1: all warnings being treated as errors

вс, 11 окт. 2020 г. в 23:19, Илья Шипицин <[email protected]>:

> seems, our CI for boringssl is broken. I see "openssl" there
>
> https://travis-ci.com/github/haproxy/haproxy/jobs/397911591#L1102-L1103
>
> вс, 11 окт. 2020 г. в 15:06, László Soós <[email protected]>:
>
>> Hi Willy, All,
>>
>> Starting from 2.1.9 compilation fails with:
>>
>> src/ssl_sock.c:1231:39: warning: 'struct certificate_ocsp' declared
>> inside parameter list will not be visible outside of this definition or
>> declaration
>>  1231 | static void ssl_sock_free_ocsp(struct certificate_ocsp *ocsp)
>>       |                                       ^~~~~~~~~~~~~~~~
>> src/ssl_sock.c: In function 'ssl_sock_free_ocsp':
>> src/ssl_sock.c:1236:6: error: dereferencing pointer to incomplete type
>> 'struct certificate_ocsp'
>>  1236 |  ocsp->refcount--;
>>       |      ^~
>>   CC      src/mux_fcgi.o
>>   CC      src/cfgparse-listen.o
>>   CC      src/http_ana.o
>> At top level:
>> src/ssl_sock.c:1231:13: warning: 'ssl_sock_free_ocsp' defined but not
>> used [-Wunused-function]
>>  1231 | static void ssl_sock_free_ocsp(struct certificate_ocsp *ocsp)
>>
>> ----
>> I went and checked source code (for 2.2.4 as it has the same problem)
>>
>> https://git.haproxy.org/?p=haproxy-2.2.git;a=blob;f=src/ssl_sock.c;h=019597ae76f2cb926b7ad42baf6378cf3456c417;hb=HEAD
>> LINE 1290
>> static void ssl_sock_free_ocsp(struct certificate_ocsp *ocsp)
>>
>> This is defined in a section:
>>
>> #if ((defined SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB && !defined OPENSSL_NO_OCSP) 
>> || defined OPENSSL_IS_BORINGSSL)
>>
>> If I go up to LINE 851 where struct certificate_ocsp  is defined, it's
>> being in a section:
>>
>> #if (defined SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB && !defined OPENSSL_NO_OCSP)
>>
>>
>> So  struct certificate_ocsp will not be defined for BORINGSSL and
>> compilation fails.
>>
>> My quick solution was (maybe not the best but it works) to move the
>> struct def above the wrong section like this:
>> #if ((defined SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB && !defined
>> OPENSSL_NO_OCSP) || defined OPENSSL_IS_BORINGSSL)
>> /*
>>  * struct alignment works here such that the key.key is the same as
>> key_data
>>  * Do not change the placement of key_data
>>  */
>> struct certificate_ocsp {
>>    struct ebmb_node key;
>>    unsigned char key_data[OCSP_MAX_CERTID_ASN1_LENGTH];
>>    struct buffer response;
>>    int refcount;
>>    long expire;
>> };
>> #endif
>>
>> Can you consider this as a bug and maybe potentially fix it in future
>> releases?
>>
>>
>> For the records after this 'patch' I get the below warnings with
>> BoringSSL but I think it's safe to ignore (?):
>> ....
>>   CC      src/hlua_fcn.o
>>   CC      src/namespace.o
>> src/ssl_sock.c:1292:13: warning: 'ssl_sock_free_ocsp' defined but not
>> used [-Wunused-function]
>>  1292 | static void ssl_sock_free_ocsp(struct certificate_ocsp *ocsp)
>>       |             ^~~~~~~~~~~~~~~~~~
>>   CC      src/mux_fcgi.o
>>   CC      src/mux_h1.o
>> In file included from include/haproxy/pool.h:29,
>>                  from include/haproxy/chunk.h:31,
>>                  from include/haproxy/dynbuf.h:33,
>>                  from include/haproxy/channel.h:27,
>>                  from src/ssl_crtlist.c:23:
>> src/ssl_crtlist.c: In function 'crtlist_parse_file':
>> include/haproxy/list.h:51:70: warning: potential null pointer dereference
>> [-Wnull-dereference]
>>    51 | #define LIST_ADDQ(lh, el) ({ (el)->p = (lh)->p; (el)->p->n =
>> (lh)->p = (el); (el)->n = (lh); (el); })
>>       |
>>  ~~~~~~~~^~~~~~
>> src/ssl_crtlist.c:425:3: note: in expansion of macro 'LIST_ADDQ'
>>   425 |   LIST_ADDQ(&ckchs->crtlist_entry, &entry->by_ckch_store);
>>       |   ^~~~~~~~~
>> include/haproxy/list.h:51:44: warning: potential null pointer dereference
>> [-Wnull-dereference]
>>    51 | #define LIST_ADDQ(lh, el) ({ (el)->p = (lh)->p; (el)->p->n =
>> (lh)->p = (el); (el)->n = (lh); (el); })
>>       |                                        ~~~~^~~
>> src/ssl_crtlist.c:425:3: note: in expansion of macro 'LIST_ADDQ'
>>   425 |   LIST_ADDQ(&ckchs->crtlist_entry, &entry->by_ckch_store);
>>       |   ^~~~~~~~~
>>   CC      src/mux_h2.o
>>   CC      src/backend.o
>>   CC      src/cfgparse.o
>> ....
>>
>> Thanks,
>>   sooslaca
>>
>>

Reply via email to