tlsdate icon indicating copy to clipboard operation
tlsdate copied to clipboard

Fails to build with `tlsdate-helper.c:377:11: error: invalid use of incomplete typedef ‘SSL’ {aka ‘const struct ssl_st’}` and subsequent errors.

Open dreirund opened this issue 1 year ago • 0 comments

I am trying to build on Artix GNU/Linux (rolling release, so software is pretty much up to date) for x86_64 architecture the latest git checkout as well as release 0.0.13.

It fails to build with tlsdate-helper.c:377:11: error: invalid use of incomplete typedef ‘SSL’ {aka ‘const struct ssl_st’} and subsequent errors:

make  all-am
make[1]: Entering directory '/tmp/makepkg/build/tlsdate-git/src/tlsdate-git'
  CC       src/tlsdate-tlsdate.o
  CCLD     src/tlsdate
  CC       src/tlsdate_helper-seccomp.o
  CC       src/tlsdate_helper-tlsdate-helper.o
src/tlsdate-helper.c: In function ‘openssl_time_callback’:
src/tlsdate-helper.c:377:11: error: invalid use of incomplete typedef ‘SSL’ {aka ‘const struct ssl_st’}
  377 |       (ssl->state == SSL3_ST_CR_SRVR_HELLO_A || ssl->state == SSL3_ST_CR_SRVR_HELLO_B))
      |           ^~
src/tlsdate-helper.c:377:22: error: ‘SSL3_ST_CR_SRVR_HELLO_A’ undeclared (first use in this function); did you mean ‘TLS_ST_CR_SRVR_HELLO’?
  377 |       (ssl->state == SSL3_ST_CR_SRVR_HELLO_A || ssl->state == SSL3_ST_CR_SRVR_HELLO_B))
      |                      ^~~~~~~~~~~~~~~~~~~~~~~
      |                      TLS_ST_CR_SRVR_HELLO
src/tlsdate-helper.c:377:22: note: each undeclared identifier is reported only once for each function it appears in
src/tlsdate-helper.c:377:52: error: invalid use of incomplete typedef ‘SSL’ {aka ‘const struct ssl_st’}
  377 |       (ssl->state == SSL3_ST_CR_SRVR_HELLO_A || ssl->state == SSL3_ST_CR_SRVR_HELLO_B))
      |                                                    ^~
src/tlsdate-helper.c:377:63: error: ‘SSL3_ST_CR_SRVR_HELLO_B’ undeclared (first use in this function); did you mean ‘TLS_ST_CR_SRVR_HELLO’?
  377 |       (ssl->state == SSL3_ST_CR_SRVR_HELLO_A || ssl->state == SSL3_ST_CR_SRVR_HELLO_B))
      |                                                               ^~~~~~~~~~~~~~~~~~~~~~~
      |                                                               TLS_ST_CR_SRVR_HELLO
src/tlsdate-helper.c:390:29: error: invalid use of incomplete typedef ‘SSL’ {aka ‘const struct ssl_st’}
  390 |     memcpy(&server_time, ssl->s3->server_random, sizeof(uint32_t));
      |                             ^~
src/tlsdate-helper.c:398:37: error: invalid use of incomplete typedef ‘SSL’ {aka ‘const struct ssl_st’}
  398 |       X509_VERIFY_PARAM_set_time(ssl->ctx->cert_store->param,
      |                                     ^~
src/tlsdate-helper.c: In function ‘get_certificate_keybits’:
src/tlsdate-helper.c:414:21: error: invalid use of incomplete typedef ‘EVP_PKEY’ {aka ‘struct evp_pkey_st’}
  414 |   switch (public_key->type)
      |                     ^~
src/tlsdate-helper.c:418:40: error: invalid use of incomplete typedef ‘EVP_PKEY’ {aka ‘struct evp_pkey_st’}
  418 |       key_bits = BN_num_bits(public_key->pkey.rsa->n);
      |                                        ^~
src/tlsdate-helper.c:422:40: error: invalid use of incomplete typedef ‘EVP_PKEY’ {aka ‘struct evp_pkey_st’}
  422 |       key_bits = BN_num_bits(public_key->pkey.rsa->n);
      |                                        ^~
src/tlsdate-helper.c:426:40: error: invalid use of incomplete typedef ‘EVP_PKEY’ {aka ‘struct evp_pkey_st’}
  426 |       key_bits = BN_num_bits(public_key->pkey.dsa->p);
      |                                        ^~
src/tlsdate-helper.c:430:40: error: invalid use of incomplete typedef ‘EVP_PKEY’ {aka ‘struct evp_pkey_st’}
  430 |       key_bits = BN_num_bits(public_key->pkey.dsa->p);
      |                                        ^~
src/tlsdate-helper.c:434:40: error: invalid use of incomplete typedef ‘EVP_PKEY’ {aka ‘struct evp_pkey_st’}
  434 |       key_bits = BN_num_bits(public_key->pkey.dsa->p);
      |                                        ^~
src/tlsdate-helper.c:438:40: error: invalid use of incomplete typedef ‘EVP_PKEY’ {aka ‘struct evp_pkey_st’}
  438 |       key_bits = BN_num_bits(public_key->pkey.dsa->p);
      |                                        ^~
src/tlsdate-helper.c:442:40: error: invalid use of incomplete typedef ‘EVP_PKEY’ {aka ‘struct evp_pkey_st’}
  442 |       key_bits = BN_num_bits(public_key->pkey.dsa->p);
      |                                        ^~
src/tlsdate-helper.c:446:40: error: invalid use of incomplete typedef ‘EVP_PKEY’ {aka ‘struct evp_pkey_st’}
  446 |       key_bits = BN_num_bits(public_key->pkey.dh->pub_key);
      |                                        ^~
src/tlsdate-helper.c: In function ‘check_san’:
src/tlsdate-helper.c:698:18: error: invalid use of incomplete typedef ‘X509_EXTENSION’ {aka ‘struct X509_extension_st’}
  698 |         tmp = ext->value->data;
      |                  ^~
src/tlsdate-helper.c:701:52: error: invalid use of incomplete typedef ‘X509_EXTENSION’ {aka ‘struct X509_extension_st’}
  701 |           extvalstr = ASN1_item_d2i(NULL, &tmp, ext->value->length,
      |                                                    ^~
src/tlsdate-helper.c:704:50: error: invalid use of incomplete typedef ‘X509_EXTENSION’ {aka ‘struct X509_extension_st’}
  704 |           extvalstr = method->d2i(NULL, &tmp, ext->value->length);
      |                                                  ^~
src/tlsdate-helper.c: In function ‘check_key_length’:
src/tlsdate-helper.c:889:48: error: invalid use of incomplete typedef ‘EVP_PKEY’ {aka ‘struct evp_pkey_st’}
  889 |   if (MIN_PUB_KEY_LEN >= key_bits && public_key->type != EVP_PKEY_EC)
      |                                                ^~
src/tlsdate-helper.c:893:20: error: invalid use of incomplete typedef ‘EVP_PKEY’ {aka ‘struct evp_pkey_st’}
  893 |      if (public_key->type == EVP_PKEY_EC)
      |                    ^~
src/tlsdate-helper.c: In function ‘run_ssl’:
src/tlsdate-helper.c:1194:27: error: invalid use of incomplete typedef ‘SSL’ {aka ‘struct ssl_st’}
 1194 |   memcpy(&result_time, ssl->s3->server_random, sizeof (uint32_t));
      |                           ^~
make[1]: *** [Makefile:2036: src/tlsdate_helper-tlsdate-helper.o] Error 1
make[1]: Leaving directory '/tmp/makepkg/build/tlsdate-git/src/tlsdate-git'
make: *** [Makefile:1431: all] Error 2

Fails to build for me on x86_64 with tlsdate-helper.c:377:11: error: invalid use of incomplete typedef ‘SSL’ {aka ‘const struct ssl_st’} and subsequent errors:

make[1]: Entering directory '/tmp/makepkg/build/tlsdate-git/src/tlsdate-git'
  CC       src/tlsdate-tlsdate.o
  CCLD     src/tlsdate
  CC       src/tlsdate_helper-seccomp.o
  CC       src/tlsdate_helper-tlsdate-helper.o
src/tlsdate-helper.c: In function ‘openssl_time_callback’:
src/tlsdate-helper.c:377:11: error: invalid use of incomplete typedef ‘SSL’ {aka ‘const struct ssl_st’}
  377 |       (ssl->state == SSL3_ST_CR_SRVR_HELLO_A || ssl->state == SSL3_ST_CR_SRVR_HELLO_B))
      |           ^~
[...]
rc/tlsdate-helper.c:1194:27: error: invalid use of incomplete typedef ‘SSL’ {aka ‘struct ssl_st’}
 1194 |   memcpy(&result_time, ssl->s3->server_random, sizeof (uint32_t));
      |                           ^~
make[1]: *** [Makefile:2036: src/tlsdate_helper-tlsdate-helper.o] Error 1

Building from https://github.com/mskd12/tlsdate succeeds.

Regards!

GCC version is 13.2.1

dreirund avatar Feb 16 '24 16:02 dreirund