Commit 2a60fccd authored by Richard Levitte's avatar Richard Levitte
Browse files

Have BIO_get_conn_int_port use BIO_ctrl instead BIO_int_ctrl



BIO_int_ctrl isn't made for the purpose BIO_get_conn_int_port used it
for.

This also changes BIO_C_GET_CONNECT to actually return the port
instead of assigning it to a pointer that was never returned back to
the caller.

Reviewed-by: default avatarRich Salz <rsalz@openssl.org>
parent f6cadeee
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -479,7 +479,7 @@ struct bio_dgram_sctp_prinfo {
# define BIO_get_conn_hostname(b)  BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,0)
# define BIO_get_conn_hostname(b)  BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,0)
# define BIO_get_conn_port(b)      BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,1)
# define BIO_get_conn_port(b)      BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,1)
# define BIO_get_conn_ip(b)               BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,2)
# define BIO_get_conn_ip(b)               BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,2)
# define BIO_get_conn_int_port(b) BIO_int_ctrl(b,BIO_C_GET_CONNECT,3,0)
# define BIO_get_conn_int_port(b) BIO_ctrl(b,BIO_C_GET_CONNECT,3,0,NULL)


# define BIO_set_nbio(b,n)       BIO_ctrl(b,BIO_C_SET_NBIO,(n),NULL)
# define BIO_set_nbio(b,n)       BIO_ctrl(b,BIO_C_SET_NBIO,(n),NULL)


+20 −11
Original line number Original line Diff line number Diff line
@@ -419,7 +419,7 @@ static long conn_ctrl(BIO *b, int cmd, long num, void *ptr)
{
{
    BIO *dbio;
    BIO *dbio;
    int *ip;
    int *ip;
    const char **pptr;
    const char **pptr = NULL;
    long ret = 1;
    long ret = 1;
    BIO_CONNECT *data;
    BIO_CONNECT *data;


@@ -442,19 +442,28 @@ static long conn_ctrl(BIO *b, int cmd, long num, void *ptr)
    case BIO_C_GET_CONNECT:
    case BIO_C_GET_CONNECT:
        if (ptr != NULL) {
        if (ptr != NULL) {
            pptr = (const char **)ptr;
            pptr = (const char **)ptr;
        }

        if (b->init) {
            if (pptr != NULL) {
                ret = 1;
                if (num == 0) {
                if (num == 0) {
                    *pptr = data->param_hostname;
                    *pptr = data->param_hostname;

                } else if (num == 1) {
                } else if (num == 1) {
                    *pptr = data->param_port;
                    *pptr = data->param_port;
                } else if (num == 2) {
                } else if (num == 2) {
                    *pptr = (char *)&(data->ip[0]);
                    *pptr = (char *)&(data->ip[0]);
            } else if (num == 3) {
                } else {
                *((int *)ptr) = data->port;
                    ret = 0;
                }
            }
            if (num == 3) {
                ret = data->port;
            }
            }
            if ((!b->init) || (ptr == NULL))
        } else {
            if (pptr != NULL)
                *pptr = "not initialized";
                *pptr = "not initialized";
            ret = 1;
            ret = 0;
        }
        }
        break;
        break;
    case BIO_C_SET_CONNECT:
    case BIO_C_SET_CONNECT: