diff options
| author | jsing <> | 2014-06-08 14:43:57 +0000 |
|---|---|---|
| committer | jsing <> | 2014-06-08 14:43:57 +0000 |
| commit | 0c9a7b35822ac8148e735e2152f457f413f9f47b (patch) | |
| tree | 7bceb70f1e953c61edae7500d0892a5d8bc1ac19 /src | |
| parent | 5537f9a415e58efaff3b336d4f2c48e97b7e3588 (diff) | |
| download | openbsd-0c9a7b35822ac8148e735e2152f457f413f9f47b.tar.gz openbsd-0c9a7b35822ac8148e735e2152f457f413f9f47b.tar.bz2 openbsd-0c9a7b35822ac8148e735e2152f457f413f9f47b.zip | |
Clean up BIO_free() handling in bio_ssl.c - BIO_free() has its own NULL
check, so do not duplicate it here. Make the error handling consistent
by always using 'goto err' rather than returning in certain cases. Also
add a missing BIO_free(ssl) in BIO_new_ssl_connect().
ok deraadt@
Diffstat (limited to 'src')
| -rw-r--r-- | src/lib/libssl/bio_ssl.c | 29 | ||||
| -rw-r--r-- | src/lib/libssl/src/ssl/bio_ssl.c | 29 |
2 files changed, 32 insertions, 26 deletions
diff --git a/src/lib/libssl/bio_ssl.c b/src/lib/libssl/bio_ssl.c index 3cd462e06f..649f7513b3 100644 --- a/src/lib/libssl/bio_ssl.c +++ b/src/lib/libssl/bio_ssl.c | |||
| @@ -494,17 +494,16 @@ BIO_new_buffer_ssl_connect(SSL_CTX *ctx) | |||
| 494 | BIO *ret = NULL, *buf = NULL, *ssl = NULL; | 494 | BIO *ret = NULL, *buf = NULL, *ssl = NULL; |
| 495 | 495 | ||
| 496 | if ((buf = BIO_new(BIO_f_buffer())) == NULL) | 496 | if ((buf = BIO_new(BIO_f_buffer())) == NULL) |
| 497 | return (NULL); | 497 | goto err; |
| 498 | if ((ssl = BIO_new_ssl_connect(ctx)) == NULL) | 498 | if ((ssl = BIO_new_ssl_connect(ctx)) == NULL) |
| 499 | goto err; | 499 | goto err; |
| 500 | if ((ret = BIO_push(buf, ssl)) == NULL) | 500 | if ((ret = BIO_push(buf, ssl)) == NULL) |
| 501 | goto err; | 501 | goto err; |
| 502 | return (ret); | 502 | return (ret); |
| 503 | |||
| 503 | err: | 504 | err: |
| 504 | if (buf != NULL) | 505 | BIO_free(buf); |
| 505 | BIO_free(buf); | 506 | BIO_free(ssl); |
| 506 | if (ssl != NULL) | ||
| 507 | BIO_free(ssl); | ||
| 508 | return (NULL); | 507 | return (NULL); |
| 509 | } | 508 | } |
| 510 | 509 | ||
| @@ -514,15 +513,16 @@ BIO_new_ssl_connect(SSL_CTX *ctx) | |||
| 514 | BIO *ret = NULL, *con = NULL, *ssl = NULL; | 513 | BIO *ret = NULL, *con = NULL, *ssl = NULL; |
| 515 | 514 | ||
| 516 | if ((con = BIO_new(BIO_s_connect())) == NULL) | 515 | if ((con = BIO_new(BIO_s_connect())) == NULL) |
| 517 | return (NULL); | 516 | goto err; |
| 518 | if ((ssl = BIO_new_ssl(ctx, 1)) == NULL) | 517 | if ((ssl = BIO_new_ssl(ctx, 1)) == NULL) |
| 519 | goto err; | 518 | goto err; |
| 520 | if ((ret = BIO_push(ssl, con)) == NULL) | 519 | if ((ret = BIO_push(ssl, con)) == NULL) |
| 521 | goto err; | 520 | goto err; |
| 522 | return (ret); | 521 | return (ret); |
| 522 | |||
| 523 | err: | 523 | err: |
| 524 | if (con != NULL) | 524 | BIO_free(con); |
| 525 | BIO_free(con); | 525 | BIO_free(ssl); |
| 526 | return (NULL); | 526 | return (NULL); |
| 527 | } | 527 | } |
| 528 | 528 | ||
| @@ -533,11 +533,10 @@ BIO_new_ssl(SSL_CTX *ctx, int client) | |||
| 533 | SSL *ssl; | 533 | SSL *ssl; |
| 534 | 534 | ||
| 535 | if ((ret = BIO_new(BIO_f_ssl())) == NULL) | 535 | if ((ret = BIO_new(BIO_f_ssl())) == NULL) |
| 536 | return (NULL); | 536 | goto err; |
| 537 | if ((ssl = SSL_new(ctx)) == NULL) { | 537 | if ((ssl = SSL_new(ctx)) == NULL) |
| 538 | BIO_free(ret); | 538 | goto err; |
| 539 | return (NULL); | 539 | |
| 540 | } | ||
| 541 | if (client) | 540 | if (client) |
| 542 | SSL_set_connect_state(ssl); | 541 | SSL_set_connect_state(ssl); |
| 543 | else | 542 | else |
| @@ -545,6 +544,10 @@ BIO_new_ssl(SSL_CTX *ctx, int client) | |||
| 545 | 544 | ||
| 546 | BIO_set_ssl(ret, ssl, BIO_CLOSE); | 545 | BIO_set_ssl(ret, ssl, BIO_CLOSE); |
| 547 | return (ret); | 546 | return (ret); |
| 547 | |||
| 548 | err: | ||
| 549 | BIO_free(ret); | ||
| 550 | return (NULL); | ||
| 548 | } | 551 | } |
| 549 | 552 | ||
| 550 | int | 553 | int |
diff --git a/src/lib/libssl/src/ssl/bio_ssl.c b/src/lib/libssl/src/ssl/bio_ssl.c index 3cd462e06f..649f7513b3 100644 --- a/src/lib/libssl/src/ssl/bio_ssl.c +++ b/src/lib/libssl/src/ssl/bio_ssl.c | |||
| @@ -494,17 +494,16 @@ BIO_new_buffer_ssl_connect(SSL_CTX *ctx) | |||
| 494 | BIO *ret = NULL, *buf = NULL, *ssl = NULL; | 494 | BIO *ret = NULL, *buf = NULL, *ssl = NULL; |
| 495 | 495 | ||
| 496 | if ((buf = BIO_new(BIO_f_buffer())) == NULL) | 496 | if ((buf = BIO_new(BIO_f_buffer())) == NULL) |
| 497 | return (NULL); | 497 | goto err; |
| 498 | if ((ssl = BIO_new_ssl_connect(ctx)) == NULL) | 498 | if ((ssl = BIO_new_ssl_connect(ctx)) == NULL) |
| 499 | goto err; | 499 | goto err; |
| 500 | if ((ret = BIO_push(buf, ssl)) == NULL) | 500 | if ((ret = BIO_push(buf, ssl)) == NULL) |
| 501 | goto err; | 501 | goto err; |
| 502 | return (ret); | 502 | return (ret); |
| 503 | |||
| 503 | err: | 504 | err: |
| 504 | if (buf != NULL) | 505 | BIO_free(buf); |
| 505 | BIO_free(buf); | 506 | BIO_free(ssl); |
| 506 | if (ssl != NULL) | ||
| 507 | BIO_free(ssl); | ||
| 508 | return (NULL); | 507 | return (NULL); |
| 509 | } | 508 | } |
| 510 | 509 | ||
| @@ -514,15 +513,16 @@ BIO_new_ssl_connect(SSL_CTX *ctx) | |||
| 514 | BIO *ret = NULL, *con = NULL, *ssl = NULL; | 513 | BIO *ret = NULL, *con = NULL, *ssl = NULL; |
| 515 | 514 | ||
| 516 | if ((con = BIO_new(BIO_s_connect())) == NULL) | 515 | if ((con = BIO_new(BIO_s_connect())) == NULL) |
| 517 | return (NULL); | 516 | goto err; |
| 518 | if ((ssl = BIO_new_ssl(ctx, 1)) == NULL) | 517 | if ((ssl = BIO_new_ssl(ctx, 1)) == NULL) |
| 519 | goto err; | 518 | goto err; |
| 520 | if ((ret = BIO_push(ssl, con)) == NULL) | 519 | if ((ret = BIO_push(ssl, con)) == NULL) |
| 521 | goto err; | 520 | goto err; |
| 522 | return (ret); | 521 | return (ret); |
| 522 | |||
| 523 | err: | 523 | err: |
| 524 | if (con != NULL) | 524 | BIO_free(con); |
| 525 | BIO_free(con); | 525 | BIO_free(ssl); |
| 526 | return (NULL); | 526 | return (NULL); |
| 527 | } | 527 | } |
| 528 | 528 | ||
| @@ -533,11 +533,10 @@ BIO_new_ssl(SSL_CTX *ctx, int client) | |||
| 533 | SSL *ssl; | 533 | SSL *ssl; |
| 534 | 534 | ||
| 535 | if ((ret = BIO_new(BIO_f_ssl())) == NULL) | 535 | if ((ret = BIO_new(BIO_f_ssl())) == NULL) |
| 536 | return (NULL); | 536 | goto err; |
| 537 | if ((ssl = SSL_new(ctx)) == NULL) { | 537 | if ((ssl = SSL_new(ctx)) == NULL) |
| 538 | BIO_free(ret); | 538 | goto err; |
| 539 | return (NULL); | 539 | |
| 540 | } | ||
| 541 | if (client) | 540 | if (client) |
| 542 | SSL_set_connect_state(ssl); | 541 | SSL_set_connect_state(ssl); |
| 543 | else | 542 | else |
| @@ -545,6 +544,10 @@ BIO_new_ssl(SSL_CTX *ctx, int client) | |||
| 545 | 544 | ||
| 546 | BIO_set_ssl(ret, ssl, BIO_CLOSE); | 545 | BIO_set_ssl(ret, ssl, BIO_CLOSE); |
| 547 | return (ret); | 546 | return (ret); |
| 547 | |||
| 548 | err: | ||
| 549 | BIO_free(ret); | ||
| 550 | return (NULL); | ||
| 548 | } | 551 | } |
| 549 | 552 | ||
| 550 | int | 553 | int |
