diff options
| author | jsing <> | 2016-08-13 13:15:53 +0000 |
|---|---|---|
| committer | jsing <> | 2016-08-13 13:15:53 +0000 |
| commit | 3d9811a670c9ec76588b71fbb7ae632dd8aace81 (patch) | |
| tree | 85d232d0a38b40e30f49257dd47d65d7576ddd68 /src/lib/libtls/tls_config.c | |
| parent | 106c5b711b1fd04712114d7fc8c05399f737cdd9 (diff) | |
| download | openbsd-3d9811a670c9ec76588b71fbb7ae632dd8aace81.tar.gz openbsd-3d9811a670c9ec76588b71fbb7ae632dd8aace81.tar.bz2 openbsd-3d9811a670c9ec76588b71fbb7ae632dd8aace81.zip | |
Avoid leaking memory if tls_config_set_alpn() is called multiple times
(this was in the original commit, but got reverted in the recommit).
Diffstat (limited to '')
| -rw-r--r-- | src/lib/libtls/tls_config.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/src/lib/libtls/tls_config.c b/src/lib/libtls/tls_config.c index cd2a04cdd6..0d52704aa8 100644 --- a/src/lib/libtls/tls_config.c +++ b/src/lib/libtls/tls_config.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: tls_config.c,v 1.26 2016/08/13 13:05:51 jsing Exp $ */ | 1 | /* $OpenBSD: tls_config.c,v 1.27 2016/08/13 13:15:53 jsing Exp $ */ |
| 2 | /* | 2 | /* |
| 3 | * Copyright (c) 2014 Joel Sing <jsing@openbsd.org> | 3 | * Copyright (c) 2014 Joel Sing <jsing@openbsd.org> |
| 4 | * | 4 | * |
| @@ -311,6 +311,10 @@ tls_config_parse_alpn(struct tls_config *config, const char *alpn, | |||
| 311 | char *s = NULL; | 311 | char *s = NULL; |
| 312 | char *p, *q; | 312 | char *p, *q; |
| 313 | 313 | ||
| 314 | free(*alpn_data); | ||
| 315 | *alpn_data = NULL; | ||
| 316 | *alpn_len = 0; | ||
| 317 | |||
| 314 | if ((buf_len = strlen(alpn) + 1) > 65535) { | 318 | if ((buf_len = strlen(alpn) + 1) > 65535) { |
| 315 | tls_config_set_errorx(config, "alpn too large"); | 319 | tls_config_set_errorx(config, "alpn too large"); |
| 316 | goto err; | 320 | goto err; |
| @@ -355,9 +359,6 @@ tls_config_parse_alpn(struct tls_config *config, const char *alpn, | |||
| 355 | free(buf); | 359 | free(buf); |
| 356 | free(s); | 360 | free(s); |
| 357 | 361 | ||
| 358 | *alpn_data = NULL; | ||
| 359 | *alpn_len = 0; | ||
| 360 | |||
| 361 | return (-1); | 362 | return (-1); |
| 362 | } | 363 | } |
| 363 | 364 | ||
