diff options
Diffstat (limited to 'src/lib/libssl/ssl_lib.c')
-rw-r--r-- | src/lib/libssl/ssl_lib.c | 24 |
1 files changed, 9 insertions, 15 deletions
diff --git a/src/lib/libssl/ssl_lib.c b/src/lib/libssl/ssl_lib.c index 79ce81e70e..b5ce2ea5ac 100644 --- a/src/lib/libssl/ssl_lib.c +++ b/src/lib/libssl/ssl_lib.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: ssl_lib.c,v 1.102 2015/03/27 12:26:41 jsing Exp $ */ | 1 | /* $OpenBSD: ssl_lib.c,v 1.103 2015/04/15 16:25:43 jsing Exp $ */ |
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
3 | * All rights reserved. | 3 | * All rights reserved. |
4 | * | 4 | * |
@@ -1410,11 +1410,10 @@ ssl_cipher_list_to_bytes(SSL *s, STACK_OF(SSL_CIPHER) *sk, unsigned char *p) | |||
1410 | } | 1410 | } |
1411 | 1411 | ||
1412 | STACK_OF(SSL_CIPHER) * | 1412 | STACK_OF(SSL_CIPHER) * |
1413 | ssl_bytes_to_cipher_list(SSL *s, unsigned char *p, int num, | 1413 | ssl_bytes_to_cipher_list(SSL *s, unsigned char *p, int num) |
1414 | STACK_OF(SSL_CIPHER) **skp) | ||
1415 | { | 1414 | { |
1416 | const SSL_CIPHER *c; | 1415 | const SSL_CIPHER *c; |
1417 | STACK_OF(SSL_CIPHER) *sk; | 1416 | STACK_OF(SSL_CIPHER) *sk = NULL; |
1418 | int i; | 1417 | int i; |
1419 | unsigned long cipher_id; | 1418 | unsigned long cipher_id; |
1420 | uint16_t cipher_value; | 1419 | uint16_t cipher_value; |
@@ -1428,13 +1427,10 @@ ssl_bytes_to_cipher_list(SSL *s, unsigned char *p, int num, | |||
1428 | SSL_R_ERROR_IN_RECEIVED_CIPHER_LIST); | 1427 | SSL_R_ERROR_IN_RECEIVED_CIPHER_LIST); |
1429 | return (NULL); | 1428 | return (NULL); |
1430 | } | 1429 | } |
1431 | if (skp == NULL || *skp == NULL) { | 1430 | |
1432 | sk = sk_SSL_CIPHER_new_null(); /* change perhaps later */ | 1431 | if ((sk = sk_SSL_CIPHER_new_null()) == NULL) { |
1433 | if (sk == NULL) | 1432 | SSLerr(SSL_F_SSL_BYTES_TO_CIPHER_LIST, ERR_R_MALLOC_FAILURE); |
1434 | goto err; | 1433 | goto err; |
1435 | } else { | ||
1436 | sk = *skp; | ||
1437 | sk_SSL_CIPHER_zero(sk); | ||
1438 | } | 1434 | } |
1439 | 1435 | ||
1440 | for (i = 0; i < num; i += SSL3_CIPHER_VALUE_SIZE) { | 1436 | for (i = 0; i < num; i += SSL3_CIPHER_VALUE_SIZE) { |
@@ -1486,13 +1482,11 @@ ssl_bytes_to_cipher_list(SSL *s, unsigned char *p, int num, | |||
1486 | } | 1482 | } |
1487 | } | 1483 | } |
1488 | 1484 | ||
1489 | if (skp != NULL) | ||
1490 | *skp = sk; | ||
1491 | return (sk); | 1485 | return (sk); |
1492 | 1486 | ||
1493 | err: | 1487 | err: |
1494 | if (skp == NULL || *skp == NULL) | 1488 | sk_SSL_CIPHER_free(sk); |
1495 | sk_SSL_CIPHER_free(sk); | 1489 | |
1496 | return (NULL); | 1490 | return (NULL); |
1497 | } | 1491 | } |
1498 | 1492 | ||