Stop using BUF_memdup() within the LibreSSL code base - it is correctly
authorjsing <jsing@openbsd.org>
Wed, 24 Jun 2015 09:44:18 +0000 (09:44 +0000)
committerjsing <jsing@openbsd.org>
Wed, 24 Jun 2015 09:44:18 +0000 (09:44 +0000)
spelt malloc+memcpy, which is what is used in all except two places.

ok deraadt@ doug@

lib/libssl/bs_cbs.c
lib/libssl/s3_clnt.c
lib/libssl/src/ssl/bs_cbs.c
lib/libssl/src/ssl/s3_clnt.c

index d45353a..ea1f010 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: bs_cbs.c,v 1.16 2015/06/23 05:58:28 doug Exp $        */
+/*     $OpenBSD: bs_cbs.c,v 1.17 2015/06/24 09:44:18 jsing Exp $       */
 /*
  * Copyright (c) 2014, Google Inc.
  *
@@ -86,10 +86,11 @@ CBS_stow(const CBS *cbs, uint8_t **out_ptr, size_t *out_len)
        if (cbs->len == 0)
                return 1;
 
-       *out_ptr = BUF_memdup(cbs->data, cbs->len);
-       if (*out_ptr == NULL)
+       if ((*out_ptr = malloc(cbs->len)) == NULL)
                return 0;
 
+       memcpy(*out_ptr, cbs->data, cbs->len);
+
        *out_len = cbs->len;
        return 1;
 }
index 0ef17d0..cf8b2ec 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: s3_clnt.c,v 1.113 2015/06/20 18:19:56 doug Exp $ */
+/* $OpenBSD: s3_clnt.c,v 1.114 2015/06/24 09:44:18 jsing Exp $ */
 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
  * All rights reserved.
  *
@@ -1815,13 +1815,13 @@ ssl3_get_cert_status(SSL *s)
                goto f_err;
        }
        free(s->tlsext_ocsp_resp);
-       s->tlsext_ocsp_resp = BUF_memdup(p, resplen);
-       if (!s->tlsext_ocsp_resp) {
+       if ((s->tlsext_ocsp_resp = malloc(resplen)) == NULL) {
                al = SSL_AD_INTERNAL_ERROR;
                SSLerr(SSL_F_SSL3_GET_CERT_STATUS,
                    ERR_R_MALLOC_FAILURE);
                goto f_err;
        }
+       memcpy(s->tlsext_ocsp_resp, p, resplen);
        s->tlsext_ocsp_resplen = resplen;
        if (s->ctx->tlsext_status_cb) {
                int ret;
index d45353a..ea1f010 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: bs_cbs.c,v 1.16 2015/06/23 05:58:28 doug Exp $        */
+/*     $OpenBSD: bs_cbs.c,v 1.17 2015/06/24 09:44:18 jsing Exp $       */
 /*
  * Copyright (c) 2014, Google Inc.
  *
@@ -86,10 +86,11 @@ CBS_stow(const CBS *cbs, uint8_t **out_ptr, size_t *out_len)
        if (cbs->len == 0)
                return 1;
 
-       *out_ptr = BUF_memdup(cbs->data, cbs->len);
-       if (*out_ptr == NULL)
+       if ((*out_ptr = malloc(cbs->len)) == NULL)
                return 0;
 
+       memcpy(*out_ptr, cbs->data, cbs->len);
+
        *out_len = cbs->len;
        return 1;
 }
index 0ef17d0..cf8b2ec 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: s3_clnt.c,v 1.113 2015/06/20 18:19:56 doug Exp $ */
+/* $OpenBSD: s3_clnt.c,v 1.114 2015/06/24 09:44:18 jsing Exp $ */
 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
  * All rights reserved.
  *
@@ -1815,13 +1815,13 @@ ssl3_get_cert_status(SSL *s)
                goto f_err;
        }
        free(s->tlsext_ocsp_resp);
-       s->tlsext_ocsp_resp = BUF_memdup(p, resplen);
-       if (!s->tlsext_ocsp_resp) {
+       if ((s->tlsext_ocsp_resp = malloc(resplen)) == NULL) {
                al = SSL_AD_INTERNAL_ERROR;
                SSLerr(SSL_F_SSL3_GET_CERT_STATUS,
                    ERR_R_MALLOC_FAILURE);
                goto f_err;
        }
+       memcpy(s->tlsext_ocsp_resp, p, resplen);
        s->tlsext_ocsp_resplen = resplen;
        if (s->ctx->tlsext_status_cb) {
                int ret;