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


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

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

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

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

apps/ocsp.c:1619:5: 
1617.       OCSP_RESPONSE *resp = NULL;
1618.   
1619. >     cbio = BIO_new_connect(host);
1620.       if (cbio == NULL) {
1621.           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:1620:9: Taking false branch
1618.   
1619.       cbio = BIO_new_connect(host);
1620.       if (cbio == NULL) {
                ^
1621.           BIO_printf(bio_err, "Error creating connect BIO\n");
1622.           goto end;

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

apps/ocsp.c:1625:9: 
1623.       }
1624.       if (port != NULL)
1625. >         BIO_set_conn_port(cbio, port);
1626.       if (use_ssl == 1) {
1627.           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:1626:9: Taking false branch
1624.       if (port != NULL)
1625.           BIO_set_conn_port(cbio, port);
1626.       if (use_ssl == 1) {
                ^
1627.           BIO *sbio;
1628.           ctx = SSL_CTX_new(TLS_client_method());

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

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

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

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

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

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

apps/ocsp.c:1531:9: 
  1529.   
  1530.       if (req_timeout != -1)
  1531. >         BIO_set_nbio(cbio, 1);
  1532.   
  1533.       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:1533:5: 
  1531.           BIO_set_nbio(cbio, 1);
  1532.   
  1533. >     rv = BIO_do_connect(cbio);
  1534.   
  1535.       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:1535:10: Taking true branch
  1533.       rv = BIO_do_connect(cbio);
  1534.   
  1535.       if ((rv <= 0) && ((req_timeout == -1) || !BIO_should_retry(cbio))) {
                   ^
  1536.           BIO_puts(bio_err, "Error connecting BIO\n");
  1537.           return NULL;

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

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

apps/ocsp.c:1540:9: 
  1538.       }
  1539.   
  1540. >     if (BIO_get_fd(cbio, &fd) < 0) {
  1541.           BIO_puts(bio_err, "Can't get connection fd\n");
  1542.           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:1540:9: Taking true branch
  1538.       }
  1539.   
  1540.       if (BIO_get_fd(cbio, &fd) < 0) {
                  ^
  1541.           BIO_puts(bio_err, "Can't get connection fd\n");
  1542.           goto err;

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

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:1603:2: 
  1601.   
  1602.       }
  1603. >  err:
  1604.       OCSP_REQ_CTX_free(ctx);
  1605.   

apps/ocsp.c:1604:5: 
  1602.       }
  1603.    err:
  1604. >     OCSP_REQ_CTX_free(ctx);
  1605.   
  1606.       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:1606:5: 
  1604.       OCSP_REQ_CTX_free(ctx);
  1605.   
  1606. >     return rsp;
  1607.   }
  1608.   

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

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

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

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

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

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

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)
