diff options
author | miod <> | 2014-07-14 08:21:47 +0000 |
---|---|---|
committer | miod <> | 2014-07-14 08:21:47 +0000 |
commit | 7f6c46ac83686766baa89c1023c4866568f3ebc3 (patch) | |
tree | d0825790fff1a57d338c3498d31bd8296074a09b /src/lib/libssl/d1_srtp.c | |
parent | 0d6c94729d541965f2d40175fc064d81a04e5a51 (diff) | |
download | openbsd-7f6c46ac83686766baa89c1023c4866568f3ebc3.tar.gz openbsd-7f6c46ac83686766baa89c1023c4866568f3ebc3.tar.bz2 openbsd-7f6c46ac83686766baa89c1023c4866568f3ebc3.zip |
Fix memory leak upon error in ssl_parse_clienthello_use_srtp_ext().
From BoringSSL.
Diffstat (limited to 'src/lib/libssl/d1_srtp.c')
-rw-r--r-- | src/lib/libssl/d1_srtp.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/src/lib/libssl/d1_srtp.c b/src/lib/libssl/d1_srtp.c index c39cb95f19..3492b7d1d0 100644 --- a/src/lib/libssl/d1_srtp.c +++ b/src/lib/libssl/d1_srtp.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: d1_srtp.c,v 1.7 2014/06/29 12:25:47 jsing Exp $ */ | 1 | /* $OpenBSD: d1_srtp.c,v 1.8 2014/07/14 08:21:47 miod 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 | * |
@@ -299,14 +299,14 @@ ssl_parse_clienthello_use_srtp_ext(SSL *s, unsigned char *d, int len, int *al) | |||
299 | int mki_len; | 299 | int mki_len; |
300 | int i, j; | 300 | int i, j; |
301 | int id; | 301 | int id; |
302 | int ret; | 302 | int ret = 1; |
303 | 303 | ||
304 | /* Length value + the MKI length */ | 304 | /* Length value + the MKI length */ |
305 | if (len < 3) { | 305 | if (len < 3) { |
306 | SSLerr(SSL_F_SSL_PARSE_CLIENTHELLO_USE_SRTP_EXT, | 306 | SSLerr(SSL_F_SSL_PARSE_CLIENTHELLO_USE_SRTP_EXT, |
307 | SSL_R_BAD_SRTP_PROTECTION_PROFILE_LIST); | 307 | SSL_R_BAD_SRTP_PROTECTION_PROFILE_LIST); |
308 | *al = SSL_AD_DECODE_ERROR; | 308 | *al = SSL_AD_DECODE_ERROR; |
309 | return 1; | 309 | goto done; |
310 | } | 310 | } |
311 | 311 | ||
312 | /* Pull off the length of the cipher suite list */ | 312 | /* Pull off the length of the cipher suite list */ |
@@ -318,7 +318,7 @@ ssl_parse_clienthello_use_srtp_ext(SSL *s, unsigned char *d, int len, int *al) | |||
318 | SSLerr(SSL_F_SSL_PARSE_CLIENTHELLO_USE_SRTP_EXT, | 318 | SSLerr(SSL_F_SSL_PARSE_CLIENTHELLO_USE_SRTP_EXT, |
319 | SSL_R_BAD_SRTP_PROTECTION_PROFILE_LIST); | 319 | SSL_R_BAD_SRTP_PROTECTION_PROFILE_LIST); |
320 | *al = SSL_AD_DECODE_ERROR; | 320 | *al = SSL_AD_DECODE_ERROR; |
321 | return 1; | 321 | goto done; |
322 | } | 322 | } |
323 | 323 | ||
324 | /* Check that lengths are consistent */ | 324 | /* Check that lengths are consistent */ |
@@ -326,7 +326,7 @@ ssl_parse_clienthello_use_srtp_ext(SSL *s, unsigned char *d, int len, int *al) | |||
326 | SSLerr(SSL_F_SSL_PARSE_CLIENTHELLO_USE_SRTP_EXT, | 326 | SSLerr(SSL_F_SSL_PARSE_CLIENTHELLO_USE_SRTP_EXT, |
327 | SSL_R_BAD_SRTP_PROTECTION_PROFILE_LIST); | 327 | SSL_R_BAD_SRTP_PROTECTION_PROFILE_LIST); |
328 | *al = SSL_AD_DECODE_ERROR; | 328 | *al = SSL_AD_DECODE_ERROR; |
329 | return 1; | 329 | goto done; |
330 | } | 330 | } |
331 | 331 | ||
332 | 332 | ||
@@ -354,7 +354,7 @@ ssl_parse_clienthello_use_srtp_ext(SSL *s, unsigned char *d, int len, int *al) | |||
354 | SSL_R_BAD_SRTP_MKI_VALUE); | 354 | SSL_R_BAD_SRTP_MKI_VALUE); |
355 | *al = SSL_AD_DECODE_ERROR; | 355 | *al = SSL_AD_DECODE_ERROR; |
356 | sk_SRTP_PROTECTION_PROFILE_free(clnt); | 356 | sk_SRTP_PROTECTION_PROFILE_free(clnt); |
357 | return 1; | 357 | goto done; |
358 | } | 358 | } |
359 | 359 | ||
360 | srvr = SSL_get_srtp_profiles(s); | 360 | srvr = SSL_get_srtp_profiles(s); |