apps/ocsp.c:1641: error: NULL_DEREFERENCE
  pointer `ctx` last assigned on line 1614 could be null and is dereferenced by call to `SSL_CTX_free()` at line 1641, column 5.
Showing all 133 steps of the trace


apps/ocsp.c:1607:1: start of procedure process_responder()
1605.   }
1606.   
1607. > OCSP_RESPONSE *process_responder(OCSP_REQUEST *req,
1608.                                    const char *host, const char *path,
1609.                                    const char *port, int use_ssl,

apps/ocsp.c:1613:5: 
1611.                                    int req_timeout)
1612.   {
1613. >     BIO *cbio = NULL;
1614.       SSL_CTX *ctx = NULL;
1615.       OCSP_RESPONSE *resp = NULL;

apps/ocsp.c:1614:5: 
1612.   {
1613.       BIO *cbio = NULL;
1614. >     SSL_CTX *ctx = NULL;
1615.       OCSP_RESPONSE *resp = NULL;
1616.   

apps/ocsp.c:1615:5: 
1613.       BIO *cbio = NULL;
1614.       SSL_CTX *ctx = NULL;
1615. >     OCSP_RESPONSE *resp = NULL;
1616.   
1617.       cbio = BIO_new_connect(host);

apps/ocsp.c:1617:5: 
1615.       OCSP_RESPONSE *resp = NULL;
1616.   
1617. >     cbio = BIO_new_connect(host);
1618.       if (cbio == NULL) {
1619.           BIO_printf(bio_err, "Error creating connect BIO\n");

crypto/bio/bss_conn.c:527:1: start of procedure BIO_new_connect()
  525.   }
  526.   
  527. > BIO *BIO_new_connect(const char *str)
  528.   {
  529.       BIO *ret;

crypto/bio/bss_conn.c:531:5: 
  529.       BIO *ret;
  530.   
  531. >     ret = BIO_new(BIO_s_connect());
  532.       if (ret == NULL)
  533.           return NULL;

crypto/bio/bss_conn.c:245:1: start of procedure BIO_s_connect()
    243.   }
    244.   
    245. > const BIO_METHOD *BIO_s_connect(void)
    246.   {
    247.       return &methods_connectp;

crypto/bio/bss_conn.c:247:5: 
    245.   const BIO_METHOD *BIO_s_connect(void)
    246.   {
    247. >     return &methods_connectp;
    248.   }
    249.   

crypto/bio/bss_conn.c:248:1: return from a call to BIO_s_connect
    246.   {
    247.       return &methods_connectp;
    248. > }
    249.   
    250.   static int conn_new(BIO *bi)

crypto/bio/bss_conn.c:531:5: Skipping BIO_new(): empty list of specs
  529.       BIO *ret;
  530.   
  531.       ret = BIO_new(BIO_s_connect());
             ^
  532.       if (ret == NULL)
  533.           return NULL;

crypto/bio/bss_conn.c:532:9: Taking false branch
  530.   
  531.       ret = BIO_new(BIO_s_connect());
  532.       if (ret == NULL)
                 ^
  533.           return NULL;
  534.       if (BIO_set_conn_hostname(ret, str))

crypto/bio/bss_conn.c:534:9: 
  532.       if (ret == NULL)
  533.           return NULL;
  534. >     if (BIO_set_conn_hostname(ret, str))
  535.           return ret;
  536.       BIO_free(ret);

crypto/bio/bio_lib.c:510:1: start of procedure BIO_ctrl()
    508.   }
    509.   
    510. > long BIO_ctrl(BIO *b, int cmd, long larg, void *parg)
    511.   {
    512.       long ret;

crypto/bio/bio_lib.c:514:9: Taking false branch
    512.       long ret;
    513.   
    514.       if (b == NULL)
                   ^
    515.           return 0;
    516.   

crypto/bio/bio_lib.c:517:10: Taking false branch
    515.           return 0;
    516.   
    517.       if ((b->method == NULL) || (b->method->ctrl == NULL)) {
                    ^
    518.           BIOerr(BIO_F_BIO_CTRL, BIO_R_UNSUPPORTED_METHOD);
    519.           return -2;

crypto/bio/bio_lib.c:517:33: Taking true branch
    515.           return 0;
    516.   
    517.       if ((b->method == NULL) || (b->method->ctrl == NULL)) {
                                           ^
    518.           BIOerr(BIO_F_BIO_CTRL, BIO_R_UNSUPPORTED_METHOD);
    519.           return -2;

crypto/bio/bio_lib.c:518:9: 
    516.   
    517.       if ((b->method == NULL) || (b->method->ctrl == NULL)) {
    518. >         BIOerr(BIO_F_BIO_CTRL, BIO_R_UNSUPPORTED_METHOD);
    519.           return -2;
    520.       }

providers/fips/fipsprov.c:435:1: start of procedure ERR_put_error()
      433.   }
      434.   
      435. > void ERR_put_error(int lib, int func, int reason, const char *file, int line)
      436.   {
      437.       /*

providers/fips/fipsprov.c:442:5: Skipping __function_pointer__(): unresolved function pointer
      440.        * a OPENSSL_CTX pointer.
      441.        */
      442.       c_put_error(NULL, ERR_PACK(lib, func, reason), file, line);
                 ^
      443.       ERR_add_error_data(1, "(in the FIPS module)");
      444.   }

providers/fips/fipsprov.c:443:5: Skipping ERR_add_error_data(): empty list of specs
      441.        */
      442.       c_put_error(NULL, ERR_PACK(lib, func, reason), file, line);
      443.       ERR_add_error_data(1, "(in the FIPS module)");
                 ^
      444.   }
      445.   

providers/fips/fipsprov.c:444:1: return from a call to ERR_put_error
      442.       c_put_error(NULL, ERR_PACK(lib, func, reason), file, line);
      443.       ERR_add_error_data(1, "(in the FIPS module)");
      444. > }
      445.   
      446.   void ERR_add_error_data(int num, ...)

crypto/bio/bio_lib.c:519:9: 
    517.       if ((b->method == NULL) || (b->method->ctrl == NULL)) {
    518.           BIOerr(BIO_F_BIO_CTRL, BIO_R_UNSUPPORTED_METHOD);
    519. >         return -2;
    520.       }
    521.   

crypto/bio/bio_lib.c:535:1: return from a call to BIO_ctrl
    533.   
    534.       return ret;
    535. > }
    536.   
    537.   long BIO_callback_ctrl(BIO *b, int cmd, BIO_info_cb *fp)

crypto/bio/bss_conn.c:534:9: Taking true branch
  532.       if (ret == NULL)
  533.           return NULL;
  534.       if (BIO_set_conn_hostname(ret, str))
                 ^
  535.           return ret;
  536.       BIO_free(ret);

crypto/bio/bss_conn.c:535:9: 
  533.           return NULL;
  534.       if (BIO_set_conn_hostname(ret, str))
  535. >         return ret;
  536.       BIO_free(ret);
  537.       return NULL;

crypto/bio/bss_conn.c:538:1: return from a call to BIO_new_connect
  536.       BIO_free(ret);
  537.       return NULL;
  538. > }
  539.   
  540.   #endif

apps/ocsp.c:1618:9: Taking false branch
1616.   
1617.       cbio = BIO_new_connect(host);
1618.       if (cbio == NULL) {
                ^
1619.           BIO_printf(bio_err, "Error creating connect BIO\n");
1620.           goto end;

apps/ocsp.c:1622:9: Taking true branch
1620.           goto end;
1621.       }
1622.       if (port != NULL)
                ^
1623.           BIO_set_conn_port(cbio, port);
1624.       if (use_ssl == 1) {

apps/ocsp.c:1623:9: 
1621.       }
1622.       if (port != NULL)
1623. >         BIO_set_conn_port(cbio, port);
1624.       if (use_ssl == 1) {
1625.           BIO *sbio;

crypto/bio/bio_lib.c:510:1: start of procedure BIO_ctrl()
  508.   }
  509.   
  510. > long BIO_ctrl(BIO *b, int cmd, long larg, void *parg)
  511.   {
  512.       long ret;

crypto/bio/bio_lib.c:514:9: Taking false branch
  512.       long ret;
  513.   
  514.       if (b == NULL)
                 ^
  515.           return 0;
  516.   

crypto/bio/bio_lib.c:517:10: Taking false branch
  515.           return 0;
  516.   
  517.       if ((b->method == NULL) || (b->method->ctrl == NULL)) {
                  ^
  518.           BIOerr(BIO_F_BIO_CTRL, BIO_R_UNSUPPORTED_METHOD);
  519.           return -2;

crypto/bio/bio_lib.c:517:33: Taking true branch
  515.           return 0;
  516.   
  517.       if ((b->method == NULL) || (b->method->ctrl == NULL)) {
                                         ^
  518.           BIOerr(BIO_F_BIO_CTRL, BIO_R_UNSUPPORTED_METHOD);
  519.           return -2;

crypto/bio/bio_lib.c:518:9: 
  516.   
  517.       if ((b->method == NULL) || (b->method->ctrl == NULL)) {
  518. >         BIOerr(BIO_F_BIO_CTRL, BIO_R_UNSUPPORTED_METHOD);
  519.           return -2;
  520.       }

providers/fips/fipsprov.c:435:1: start of procedure ERR_put_error()
    433.   }
    434.   
    435. > void ERR_put_error(int lib, int func, int reason, const char *file, int line)
    436.   {
    437.       /*

providers/fips/fipsprov.c:442:5: Skipping __function_pointer__(): unresolved function pointer
    440.        * a OPENSSL_CTX pointer.
    441.        */
    442.       c_put_error(NULL, ERR_PACK(lib, func, reason), file, line);
               ^
    443.       ERR_add_error_data(1, "(in the FIPS module)");
    444.   }

providers/fips/fipsprov.c:443:5: Skipping ERR_add_error_data(): empty list of specs
    441.        */
    442.       c_put_error(NULL, ERR_PACK(lib, func, reason), file, line);
    443.       ERR_add_error_data(1, "(in the FIPS module)");
               ^
    444.   }
    445.   

providers/fips/fipsprov.c:444:1: return from a call to ERR_put_error
    442.       c_put_error(NULL, ERR_PACK(lib, func, reason), file, line);
    443.       ERR_add_error_data(1, "(in the FIPS module)");
    444. > }
    445.   
    446.   void ERR_add_error_data(int num, ...)

crypto/bio/bio_lib.c:519:9: 
  517.       if ((b->method == NULL) || (b->method->ctrl == NULL)) {
  518.           BIOerr(BIO_F_BIO_CTRL, BIO_R_UNSUPPORTED_METHOD);
  519. >         return -2;
  520.       }
  521.   

crypto/bio/bio_lib.c:535:1: return from a call to BIO_ctrl
  533.   
  534.       return ret;
  535. > }
  536.   
  537.   long BIO_callback_ctrl(BIO *b, int cmd, BIO_info_cb *fp)

apps/ocsp.c:1624:9: Taking false branch
1622.       if (port != NULL)
1623.           BIO_set_conn_port(cbio, port);
1624.       if (use_ssl == 1) {
                ^
1625.           BIO *sbio;
1626.           ctx = SSL_CTX_new(TLS_client_method());

apps/ocsp.c:1636:5: 
1634.       }
1635.   
1636. >     resp = query_responder(cbio, host, path, headers, req, req_timeout);
1637.       if (resp == NULL)
1638.           BIO_printf(bio_err, "Error querying OCSP responder\n");

apps/ocsp.c:1514:1: start of procedure query_responder()
  1512.   
  1513.   # ifndef OPENSSL_NO_SOCK
  1514. > static OCSP_RESPONSE *query_responder(BIO *cbio, const char *host,
  1515.                                         const char *path,
  1516.                                         const STACK_OF(CONF_VALUE) *headers,

apps/ocsp.c:1522:5: 
  1520.       int rv;
  1521.       int i;
  1522. >     int add_host = 1;
  1523.       OCSP_REQ_CTX *ctx = NULL;
  1524.       OCSP_RESPONSE *rsp = NULL;

apps/ocsp.c:1523:5: 
  1521.       int i;
  1522.       int add_host = 1;
  1523. >     OCSP_REQ_CTX *ctx = NULL;
  1524.       OCSP_RESPONSE *rsp = NULL;
  1525.       fd_set confds;

apps/ocsp.c:1524:5: 
  1522.       int add_host = 1;
  1523.       OCSP_REQ_CTX *ctx = NULL;
  1524. >     OCSP_RESPONSE *rsp = NULL;
  1525.       fd_set confds;
  1526.       struct timeval tv;

apps/ocsp.c:1528:9: Taking true branch
  1526.       struct timeval tv;
  1527.   
  1528.       if (req_timeout != -1)
                  ^
  1529.           BIO_set_nbio(cbio, 1);
  1530.   

apps/ocsp.c:1529:9: 
  1527.   
  1528.       if (req_timeout != -1)
  1529. >         BIO_set_nbio(cbio, 1);
  1530.   
  1531.       rv = BIO_do_connect(cbio);

crypto/bio/bio_lib.c:510:1: start of procedure BIO_ctrl()
    508.   }
    509.   
    510. > long BIO_ctrl(BIO *b, int cmd, long larg, void *parg)
    511.   {
    512.       long ret;

crypto/bio/bio_lib.c:514:9: Taking false branch
    512.       long ret;
    513.   
    514.       if (b == NULL)
                   ^
    515.           return 0;
    516.   

crypto/bio/bio_lib.c:517:10: Taking false branch
    515.           return 0;
    516.   
    517.       if ((b->method == NULL) || (b->method->ctrl == NULL)) {
                    ^
    518.           BIOerr(BIO_F_BIO_CTRL, BIO_R_UNSUPPORTED_METHOD);
    519.           return -2;

crypto/bio/bio_lib.c:517:33: Taking true branch
    515.           return 0;
    516.   
    517.       if ((b->method == NULL) || (b->method->ctrl == NULL)) {
                                           ^
    518.           BIOerr(BIO_F_BIO_CTRL, BIO_R_UNSUPPORTED_METHOD);
    519.           return -2;

crypto/bio/bio_lib.c:518:9: 
    516.   
    517.       if ((b->method == NULL) || (b->method->ctrl == NULL)) {
    518. >         BIOerr(BIO_F_BIO_CTRL, BIO_R_UNSUPPORTED_METHOD);
    519.           return -2;
    520.       }

providers/fips/fipsprov.c:435:1: start of procedure ERR_put_error()
      433.   }
      434.   
      435. > void ERR_put_error(int lib, int func, int reason, const char *file, int line)
      436.   {
      437.       /*

providers/fips/fipsprov.c:442:5: Skipping __function_pointer__(): unresolved function pointer
      440.        * a OPENSSL_CTX pointer.
      441.        */
      442.       c_put_error(NULL, ERR_PACK(lib, func, reason), file, line);
                 ^
      443.       ERR_add_error_data(1, "(in the FIPS module)");
      444.   }

providers/fips/fipsprov.c:443:5: Skipping ERR_add_error_data(): empty list of specs
      441.        */
      442.       c_put_error(NULL, ERR_PACK(lib, func, reason), file, line);
      443.       ERR_add_error_data(1, "(in the FIPS module)");
                 ^
      444.   }
      445.   

providers/fips/fipsprov.c:444:1: return from a call to ERR_put_error
      442.       c_put_error(NULL, ERR_PACK(lib, func, reason), file, line);
      443.       ERR_add_error_data(1, "(in the FIPS module)");
      444. > }
      445.   
      446.   void ERR_add_error_data(int num, ...)

crypto/bio/bio_lib.c:519:9: 
    517.       if ((b->method == NULL) || (b->method->ctrl == NULL)) {
    518.           BIOerr(BIO_F_BIO_CTRL, BIO_R_UNSUPPORTED_METHOD);
    519. >         return -2;
    520.       }
    521.   

crypto/bio/bio_lib.c:535:1: return from a call to BIO_ctrl
    533.   
    534.       return ret;
    535. > }
    536.   
    537.   long BIO_callback_ctrl(BIO *b, int cmd, BIO_info_cb *fp)

apps/ocsp.c:1531:5: 
  1529.           BIO_set_nbio(cbio, 1);
  1530.   
  1531. >     rv = BIO_do_connect(cbio);
  1532.   
  1533.       if ((rv <= 0) && ((req_timeout == -1) || !BIO_should_retry(cbio))) {

crypto/bio/bio_lib.c:510:1: start of procedure BIO_ctrl()
    508.   }
    509.   
    510. > long BIO_ctrl(BIO *b, int cmd, long larg, void *parg)
    511.   {
    512.       long ret;

crypto/bio/bio_lib.c:514:9: Taking false branch
    512.       long ret;
    513.   
    514.       if (b == NULL)
                   ^
    515.           return 0;
    516.   

crypto/bio/bio_lib.c:517:10: Taking false branch
    515.           return 0;
    516.   
    517.       if ((b->method == NULL) || (b->method->ctrl == NULL)) {
                    ^
    518.           BIOerr(BIO_F_BIO_CTRL, BIO_R_UNSUPPORTED_METHOD);
    519.           return -2;

crypto/bio/bio_lib.c:517:33: Taking true branch
    515.           return 0;
    516.   
    517.       if ((b->method == NULL) || (b->method->ctrl == NULL)) {
                                           ^
    518.           BIOerr(BIO_F_BIO_CTRL, BIO_R_UNSUPPORTED_METHOD);
    519.           return -2;

crypto/bio/bio_lib.c:518:9: 
    516.   
    517.       if ((b->method == NULL) || (b->method->ctrl == NULL)) {
    518. >         BIOerr(BIO_F_BIO_CTRL, BIO_R_UNSUPPORTED_METHOD);
    519.           return -2;
    520.       }

providers/fips/fipsprov.c:435:1: start of procedure ERR_put_error()
      433.   }
      434.   
      435. > void ERR_put_error(int lib, int func, int reason, const char *file, int line)
      436.   {
      437.       /*

providers/fips/fipsprov.c:442:5: Skipping __function_pointer__(): unresolved function pointer
      440.        * a OPENSSL_CTX pointer.
      441.        */
      442.       c_put_error(NULL, ERR_PACK(lib, func, reason), file, line);
                 ^
      443.       ERR_add_error_data(1, "(in the FIPS module)");
      444.   }

providers/fips/fipsprov.c:443:5: Skipping ERR_add_error_data(): empty list of specs
      441.        */
      442.       c_put_error(NULL, ERR_PACK(lib, func, reason), file, line);
      443.       ERR_add_error_data(1, "(in the FIPS module)");
                 ^
      444.   }
      445.   

providers/fips/fipsprov.c:444:1: return from a call to ERR_put_error
      442.       c_put_error(NULL, ERR_PACK(lib, func, reason), file, line);
      443.       ERR_add_error_data(1, "(in the FIPS module)");
      444. > }
      445.   
      446.   void ERR_add_error_data(int num, ...)

crypto/bio/bio_lib.c:519:9: 
    517.       if ((b->method == NULL) || (b->method->ctrl == NULL)) {
    518.           BIOerr(BIO_F_BIO_CTRL, BIO_R_UNSUPPORTED_METHOD);
    519. >         return -2;
    520.       }
    521.   

crypto/bio/bio_lib.c:535:1: return from a call to BIO_ctrl
    533.   
    534.       return ret;
    535. > }
    536.   
    537.   long BIO_callback_ctrl(BIO *b, int cmd, BIO_info_cb *fp)

apps/ocsp.c:1533:10: Taking true branch
  1531.       rv = BIO_do_connect(cbio);
  1532.   
  1533.       if ((rv <= 0) && ((req_timeout == -1) || !BIO_should_retry(cbio))) {
                   ^
  1534.           BIO_puts(bio_err, "Error connecting BIO\n");
  1535.           return NULL;

apps/ocsp.c:1533:24: Taking false branch
  1531.       rv = BIO_do_connect(cbio);
  1532.   
  1533.       if ((rv <= 0) && ((req_timeout == -1) || !BIO_should_retry(cbio))) {
                                 ^
  1534.           BIO_puts(bio_err, "Error connecting BIO\n");
  1535.           return NULL;

apps/ocsp.c:1533:47: 
  1531.       rv = BIO_do_connect(cbio);
  1532.   
  1533. >     if ((rv <= 0) && ((req_timeout == -1) || !BIO_should_retry(cbio))) {
  1534.           BIO_puts(bio_err, "Error connecting BIO\n");
  1535.           return NULL;

crypto/bio/bio_lib.c:195:1: start of procedure BIO_test_flags()
    193.   }
    194.   
    195. > int BIO_test_flags(const BIO *b, int flags)
    196.   {
    197.       return (b->flags & flags);

crypto/bio/bio_lib.c:197:5: 
    195.   int BIO_test_flags(const BIO *b, int flags)
    196.   {
    197. >     return (b->flags & flags);
    198.   }
    199.   

crypto/bio/bio_lib.c:198:1: return from a call to BIO_test_flags
    196.   {
    197.       return (b->flags & flags);
    198. > }
    199.   
    200.   void BIO_set_flags(BIO *b, int flags)

apps/ocsp.c:1533:47: Taking false branch
  1531.       rv = BIO_do_connect(cbio);
  1532.   
  1533.       if ((rv <= 0) && ((req_timeout == -1) || !BIO_should_retry(cbio))) {
                                                        ^
  1534.           BIO_puts(bio_err, "Error connecting BIO\n");
  1535.           return NULL;

apps/ocsp.c:1538:9: 
  1536.       }
  1537.   
  1538. >     if (BIO_get_fd(cbio, &fd) < 0) {
  1539.           BIO_puts(bio_err, "Can't get connection fd\n");
  1540.           goto err;

crypto/bio/bio_lib.c:510:1: start of procedure BIO_ctrl()
    508.   }
    509.   
    510. > long BIO_ctrl(BIO *b, int cmd, long larg, void *parg)
    511.   {
    512.       long ret;

crypto/bio/bio_lib.c:514:9: Taking false branch
    512.       long ret;
    513.   
    514.       if (b == NULL)
                   ^
    515.           return 0;
    516.   

crypto/bio/bio_lib.c:517:10: Taking false branch
    515.           return 0;
    516.   
    517.       if ((b->method == NULL) || (b->method->ctrl == NULL)) {
                    ^
    518.           BIOerr(BIO_F_BIO_CTRL, BIO_R_UNSUPPORTED_METHOD);
    519.           return -2;

crypto/bio/bio_lib.c:517:33: Taking true branch
    515.           return 0;
    516.   
    517.       if ((b->method == NULL) || (b->method->ctrl == NULL)) {
                                           ^
    518.           BIOerr(BIO_F_BIO_CTRL, BIO_R_UNSUPPORTED_METHOD);
    519.           return -2;

crypto/bio/bio_lib.c:518:9: 
    516.   
    517.       if ((b->method == NULL) || (b->method->ctrl == NULL)) {
    518. >         BIOerr(BIO_F_BIO_CTRL, BIO_R_UNSUPPORTED_METHOD);
    519.           return -2;
    520.       }

providers/fips/fipsprov.c:435:1: start of procedure ERR_put_error()
      433.   }
      434.   
      435. > void ERR_put_error(int lib, int func, int reason, const char *file, int line)
      436.   {
      437.       /*

providers/fips/fipsprov.c:442:5: Skipping __function_pointer__(): unresolved function pointer
      440.        * a OPENSSL_CTX pointer.
      441.        */
      442.       c_put_error(NULL, ERR_PACK(lib, func, reason), file, line);
                 ^
      443.       ERR_add_error_data(1, "(in the FIPS module)");
      444.   }

providers/fips/fipsprov.c:443:5: Skipping ERR_add_error_data(): empty list of specs
      441.        */
      442.       c_put_error(NULL, ERR_PACK(lib, func, reason), file, line);
      443.       ERR_add_error_data(1, "(in the FIPS module)");
                 ^
      444.   }
      445.   

providers/fips/fipsprov.c:444:1: return from a call to ERR_put_error
      442.       c_put_error(NULL, ERR_PACK(lib, func, reason), file, line);
      443.       ERR_add_error_data(1, "(in the FIPS module)");
      444. > }
      445.   
      446.   void ERR_add_error_data(int num, ...)

crypto/bio/bio_lib.c:519:9: 
    517.       if ((b->method == NULL) || (b->method->ctrl == NULL)) {
    518.           BIOerr(BIO_F_BIO_CTRL, BIO_R_UNSUPPORTED_METHOD);
    519. >         return -2;
    520.       }
    521.   

crypto/bio/bio_lib.c:535:1: return from a call to BIO_ctrl
    533.   
    534.       return ret;
    535. > }
    536.   
    537.   long BIO_callback_ctrl(BIO *b, int cmd, BIO_info_cb *fp)

apps/ocsp.c:1538:9: Taking true branch
  1536.       }
  1537.   
  1538.       if (BIO_get_fd(cbio, &fd) < 0) {
                  ^
  1539.           BIO_puts(bio_err, "Can't get connection fd\n");
  1540.           goto err;

apps/ocsp.c:1539:9: 
  1537.   
  1538.       if (BIO_get_fd(cbio, &fd) < 0) {
  1539. >         BIO_puts(bio_err, "Can't get connection fd\n");
  1540.           goto err;
  1541.       }

crypto/bio/bio_lib.c:387:1: start of procedure BIO_puts()
    385.   }
    386.   
    387. > int BIO_puts(BIO *b, const char *buf)
    388.   {
    389.       int ret;

crypto/bio/bio_lib.c:390:5: 
    388.   {
    389.       int ret;
    390. >     size_t written = 0;
    391.   
    392.       if ((b == NULL) || (b->method == NULL) || (b->method->bputs == NULL)) {

crypto/bio/bio_lib.c:392:10: Taking false branch
    390.       size_t written = 0;
    391.   
    392.       if ((b == NULL) || (b->method == NULL) || (b->method->bputs == NULL)) {
                    ^
    393.           BIOerr(BIO_F_BIO_PUTS, BIO_R_UNSUPPORTED_METHOD);
    394.           return -2;

crypto/bio/bio_lib.c:392:25: Taking false branch
    390.       size_t written = 0;
    391.   
    392.       if ((b == NULL) || (b->method == NULL) || (b->method->bputs == NULL)) {
                                   ^
    393.           BIOerr(BIO_F_BIO_PUTS, BIO_R_UNSUPPORTED_METHOD);
    394.           return -2;

crypto/bio/bio_lib.c:392:48: Taking false branch
    390.       size_t written = 0;
    391.   
    392.       if ((b == NULL) || (b->method == NULL) || (b->method->bputs == NULL)) {
                                                          ^
    393.           BIOerr(BIO_F_BIO_PUTS, BIO_R_UNSUPPORTED_METHOD);
    394.           return -2;

crypto/bio/bio_lib.c:397:9: Taking false branch
    395.       }
    396.   
    397.       if (b->callback != NULL || b->callback_ex != NULL) {
                   ^
    398.           ret = (int)bio_call_callback(b, BIO_CB_PUTS, buf, 0, 0, 0L, 1L, NULL);
    399.           if (ret <= 0)

crypto/bio/bio_lib.c:397:32: Taking false branch
    395.       }
    396.   
    397.       if (b->callback != NULL || b->callback_ex != NULL) {
                                          ^
    398.           ret = (int)bio_call_callback(b, BIO_CB_PUTS, buf, 0, 0, 0L, 1L, NULL);
    399.           if (ret <= 0)

crypto/bio/bio_lib.c:403:10: Taking true branch
    401.       }
    402.   
    403.       if (!b->init) {
                    ^
    404.           BIOerr(BIO_F_BIO_PUTS, BIO_R_UNINITIALIZED);
    405.           return -2;

crypto/bio/bio_lib.c:404:9: 
    402.   
    403.       if (!b->init) {
    404. >         BIOerr(BIO_F_BIO_PUTS, BIO_R_UNINITIALIZED);
    405.           return -2;
    406.       }

providers/fips/fipsprov.c:435:1: start of procedure ERR_put_error()
      433.   }
      434.   
      435. > void ERR_put_error(int lib, int func, int reason, const char *file, int line)
      436.   {
      437.       /*

providers/fips/fipsprov.c:442:5: Skipping __function_pointer__(): unresolved function pointer
      440.        * a OPENSSL_CTX pointer.
      441.        */
      442.       c_put_error(NULL, ERR_PACK(lib, func, reason), file, line);
                 ^
      443.       ERR_add_error_data(1, "(in the FIPS module)");
      444.   }

providers/fips/fipsprov.c:443:5: Skipping ERR_add_error_data(): empty list of specs
      441.        */
      442.       c_put_error(NULL, ERR_PACK(lib, func, reason), file, line);
      443.       ERR_add_error_data(1, "(in the FIPS module)");
                 ^
      444.   }
      445.   

providers/fips/fipsprov.c:444:1: return from a call to ERR_put_error
      442.       c_put_error(NULL, ERR_PACK(lib, func, reason), file, line);
      443.       ERR_add_error_data(1, "(in the FIPS module)");
      444. > }
      445.   
      446.   void ERR_add_error_data(int num, ...)

crypto/bio/bio_lib.c:405:9: 
    403.       if (!b->init) {
    404.           BIOerr(BIO_F_BIO_PUTS, BIO_R_UNINITIALIZED);
    405. >         return -2;
    406.       }
    407.   

crypto/bio/bio_lib.c:430:1: return from a call to BIO_puts
    428.   
    429.       return ret;
    430. > }
    431.   
    432.   int BIO_gets(BIO *b, char *buf, int size)

apps/ocsp.c:1601:2: 
  1599.   
  1600.       }
  1601. >  err:
  1602.       OCSP_REQ_CTX_free(ctx);
  1603.   

apps/ocsp.c:1602:5: 
  1600.       }
  1601.    err:
  1602. >     OCSP_REQ_CTX_free(ctx);
  1603.   
  1604.       return rsp;

crypto/ocsp/ocsp_ht.c:86:1: start of procedure OCSP_REQ_CTX_free()
    84.   }
    85.   
    86. > void OCSP_REQ_CTX_free(OCSP_REQ_CTX *rctx)
    87.   {
    88.       if (!rctx)

crypto/ocsp/ocsp_ht.c:88:10: Taking true branch
    86.   void OCSP_REQ_CTX_free(OCSP_REQ_CTX *rctx)
    87.   {
    88.       if (!rctx)
                   ^
    89.           return;
    90.       BIO_free(rctx->mem);

crypto/ocsp/ocsp_ht.c:89:9: 
    87.   {
    88.       if (!rctx)
    89. >         return;
    90.       BIO_free(rctx->mem);
    91.       OPENSSL_free(rctx->iobuf);

crypto/ocsp/ocsp_ht.c:93:1: return from a call to OCSP_REQ_CTX_free
    91.       OPENSSL_free(rctx->iobuf);
    92.       OPENSSL_free(rctx);
    93. > }
    94.   
    95.   BIO *OCSP_REQ_CTX_get0_mem_bio(OCSP_REQ_CTX *rctx)

apps/ocsp.c:1604:5: 
  1602.       OCSP_REQ_CTX_free(ctx);
  1603.   
  1604. >     return rsp;
  1605.   }
  1606.   

apps/ocsp.c:1605:1: return from a call to query_responder
  1603.   
  1604.       return rsp;
  1605. > }
  1606.   
  1607.   OCSP_RESPONSE *process_responder(OCSP_REQUEST *req,

apps/ocsp.c:1637:9: Taking true branch
1635.   
1636.       resp = query_responder(cbio, host, path, headers, req, req_timeout);
1637.       if (resp == NULL)
                ^
1638.           BIO_printf(bio_err, "Error querying OCSP responder\n");
1639.    end:

apps/ocsp.c:1638:9: Skipping BIO_printf(): empty list of specs
1636.       resp = query_responder(cbio, host, path, headers, req, req_timeout);
1637.       if (resp == NULL)
1638.           BIO_printf(bio_err, "Error querying OCSP responder\n");
                ^
1639.    end:
1640.       BIO_free_all(cbio);

apps/ocsp.c:1639:2: 
1637.       if (resp == NULL)
1638.           BIO_printf(bio_err, "Error querying OCSP responder\n");
1639. >  end:
1640.       BIO_free_all(cbio);
1641.       SSL_CTX_free(ctx);

apps/ocsp.c:1640:5: Skipping BIO_free_all(): empty list of specs
1638.           BIO_printf(bio_err, "Error querying OCSP responder\n");
1639.    end:
1640.       BIO_free_all(cbio);
            ^
1641.       SSL_CTX_free(ctx);
1642.       return resp;

apps/ocsp.c:1641:5: 
1639.    end:
1640.       BIO_free_all(cbio);
1641. >     SSL_CTX_free(ctx);
1642.       return resp;
1643.   }

ssl/ssl_lib.c:3239:1: start of procedure SSL_CTX_free()
  3237.   }
  3238.   
  3239. > void SSL_CTX_free(SSL_CTX *a)
  3240.   {
  3241.       int i;

ssl/ssl_lib.c:3243:9: Taking false branch
  3241.       int i;
  3242.   
  3243.       if (a == NULL)
                  ^
  3244.           return;
  3245.   

ssl/ssl_lib.c:3246:5: 
  3244.           return;
  3245.   
  3246. >     CRYPTO_DOWN_REF(&a->references, &i, a->lock);
  3247.       REF_PRINT_COUNT("SSL_CTX", a);
  3248.       if (i > 0)

include/internal/refcount.h:49:1: start of procedure CRYPTO_DOWN_REF()
    47.    * otherwise imply an acquire fence. Hence conditional acquire fence...
    48.    */
    49. > static inline int CRYPTO_DOWN_REF(_Atomic int *val, int *ret, void *lock)
    50.   {
    51.       *ret = atomic_fetch_sub_explicit(val, 1, memory_order_relaxed) - 1;

include/internal/refcount.h:51:5: 
    49.   static inline int CRYPTO_DOWN_REF(_Atomic int *val, int *ret, void *lock)
    50.   {
    51. >     *ret = atomic_fetch_sub_explicit(val, 1, memory_order_relaxed) - 1;
    52.       if (*ret == 0)
    53.           atomic_thread_fence(memory_order_acquire);

include/internal/refcount.h:52:9: Taking true branch
    50.   {
    51.       *ret = atomic_fetch_sub_explicit(val, 1, memory_order_relaxed) - 1;
    52.       if (*ret == 0)
                  ^
    53.           atomic_thread_fence(memory_order_acquire);
    54.       return 1;

include/internal/refcount.h:53:9: Skipping __c11_atomic_thread_fence(): method has no implementation
    51.       *ret = atomic_fetch_sub_explicit(val, 1, memory_order_relaxed) - 1;
    52.       if (*ret == 0)
    53.           atomic_thread_fence(memory_order_acquire);
                  ^
    54.       return 1;
    55.   }

include/internal/refcount.h:54:5: 
    52.       if (*ret == 0)
    53.           atomic_thread_fence(memory_order_acquire);
    54. >     return 1;
    55.   }
    56.   

include/internal/refcount.h:55:1: return from a call to CRYPTO_DOWN_REF
    53.           atomic_thread_fence(memory_order_acquire);
    54.       return 1;
    55. > }
    56.   
    57.   #  elif defined(__GNUC__) && defined(__ATOMIC_RELAXED) && __GCC_ATOMIC_INT_LOCK_FREE > 0

ssl/ssl_lib.c:3248:9: Taking true branch
  3246.       CRYPTO_DOWN_REF(&a->references, &i, a->lock);
  3247.       REF_PRINT_COUNT("SSL_CTX", a);
  3248.       if (i > 0)
                  ^
  3249.           return;
  3250.       REF_ASSERT_ISNT(i < 0);

ssl/ssl_lib.c:3249:9: 
  3247.       REF_PRINT_COUNT("SSL_CTX", a);
  3248.       if (i > 0)
  3249. >         return;
  3250.       REF_ASSERT_ISNT(i < 0);
  3251.   

ssl/ssl_lib.c:3301:1: return from a call to SSL_CTX_free
  3299.   
  3300.       OPENSSL_free(a);
  3301. > }
  3302.   
  3303.   void SSL_CTX_set_default_passwd_cb(SSL_CTX *ctx, pem_password_cb *cb)
