[Date Prev][Date Next] [Chronological] [Thread] [Top]

(ITS#8922) tls_o bug with OpenSSL 1.1.1



Full_Name: Norman Green
Version: 2.4.45
OS: AIX
URL: ftp://ftp.openldap.org/incoming/
Submission from: (NULL) (50.53.145.234)


in tls_o.c, the function tlso_sb_setup has this code on line 833:

bio = BIO_new( &tlso_bio_method );

which uses a statically allocated BIO_METHOD. Unfortunately the layout of the
BIO_METHOD struct changed in OpenSSL 1.1.1 and the static initialization is now
incorrect:

static BIO_METHOD tlso_bio_method =
{
	( 100 | 0x400 ),		/* it's a source/sink BIO */
	"sockbuf glue",
	tlso_bio_write,
	tlso_bio_read,
	tlso_bio_puts,
	tlso_bio_gets,
	tlso_bio_ctrl,
	tlso_bio_create,
	tlso_bio_destroy
};

In 1.1.1, this (internal) SSL struct looks like this:

struct bio_method_st {
    int type;
    char *name;
    int (*bwrite) (BIO *, const char *, size_t, size_t *);
    int (*bwrite_old) (BIO *, const char *, int);
    int (*bread) (BIO *, char *, size_t, size_t *);
    int (*bread_old) (BIO *, char *, int);
    int (*bputs) (BIO *, const char *);
    int (*bgets) (BIO *, char *, int);
    long (*ctrl) (BIO *, int, long, void *);
    int (*create) (BIO *);
    int (*destroy) (BIO *);
    long (*callback_ctrl) (BIO *, int, BIO_info_cb *);
};