summaryrefslogtreecommitdiff
path: root/src/lib/libssl/d1_srtp.c
diff options
context:
space:
mode:
authormiod <>2014-07-14 08:21:47 +0000
committermiod <>2014-07-14 08:21:47 +0000
commit7f6c46ac83686766baa89c1023c4866568f3ebc3 (patch)
treed0825790fff1a57d338c3498d31bd8296074a09b /src/lib/libssl/d1_srtp.c
parent0d6c94729d541965f2d40175fc064d81a04e5a51 (diff)
downloadopenbsd-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.c12
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);