From 909247b30c58e971994251b7bf7092e9dd8967df Mon Sep 17 00:00:00 2001 From: beck <> Date: Thu, 16 Oct 2014 03:19:02 +0000 Subject: Get rid of the last remaining BUF_strdup and BUF_strlcpy and friends, use intrinsic functions everywhere, and wrap these functions in an #ifndef LIBRESSL_INTERNAL to make sure we don't bring their use back. --- src/lib/libcrypto/buffer/buffer.h | 7 +++++-- src/lib/libcrypto/store/str_lib.c | 4 ++-- src/lib/libcrypto/x509/x509_trs.c | 5 +++-- src/lib/libssl/src/crypto/buffer/buffer.h | 7 +++++-- src/lib/libssl/src/crypto/store/str_lib.c | 4 ++-- src/lib/libssl/src/crypto/x509/x509_trs.c | 5 +++-- src/lib/libssl/src/ssl/ssl_asn1.c | 4 ++-- src/lib/libssl/ssl_asn1.c | 4 ++-- 8 files changed, 24 insertions(+), 16 deletions(-) (limited to 'src') diff --git a/src/lib/libcrypto/buffer/buffer.h b/src/lib/libcrypto/buffer/buffer.h index def1943d31..5aa0e3ea47 100644 --- a/src/lib/libcrypto/buffer/buffer.h +++ b/src/lib/libcrypto/buffer/buffer.h @@ -1,4 +1,4 @@ -/* $OpenBSD: buffer.h,v 1.13 2014/07/13 14:13:27 beck Exp $ */ +/* $OpenBSD: buffer.h,v 1.14 2014/10/16 03:19:02 beck Exp $ */ /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) * All rights reserved. * @@ -84,17 +84,20 @@ BUF_MEM *BUF_MEM_new(void); void BUF_MEM_free(BUF_MEM *a); int BUF_MEM_grow(BUF_MEM *str, size_t len); int BUF_MEM_grow_clean(BUF_MEM *str, size_t len); +#ifndef LIBRESSL_INTERNAL char * BUF_strdup(const char *str); char * BUF_strndup(const char *str, size_t siz); +#endif void * BUF_memdup(const void *data, size_t siz); void BUF_reverse(unsigned char *out, const unsigned char *in, size_t siz); +#ifndef LIBRESSL_INTERNAL /* safe string functions */ size_t BUF_strlcpy(char *dst, const char *src, size_t siz) __attribute__ ((__bounded__(__string__,1,3))); size_t BUF_strlcat(char *dst, const char *src, size_t siz) __attribute__ ((__bounded__(__string__,1,3))); - +#endif /* BEGIN ERROR CODES */ /* The following lines are auto generated by the script mkerr.pl. Any changes diff --git a/src/lib/libcrypto/store/str_lib.c b/src/lib/libcrypto/store/str_lib.c index ff00aa19ce..9ae93b6405 100644 --- a/src/lib/libcrypto/store/str_lib.c +++ b/src/lib/libcrypto/store/str_lib.c @@ -1,4 +1,4 @@ -/* $OpenBSD: str_lib.c,v 1.10 2014/07/10 22:45:58 jsing Exp $ */ +/* $OpenBSD: str_lib.c,v 1.11 2014/10/16 03:19:02 beck Exp $ */ /* Written by Richard Levitte (richard@levitte.org) for the OpenSSL * project 2003. */ @@ -1341,7 +1341,7 @@ STORE_ATTR_INFO_set_cstr(STORE_ATTR_INFO *attrs, STORE_ATTR_TYPES code, return 0; } if (!ATTR_IS_SET(attrs, code)) { - if ((attrs->values[code].cstring = BUF_strndup(cstr, cstr_size))) + if (cstr && (attrs->values[code].cstring = strndup(cstr, cstr_size))) return 1; STOREerr(STORE_F_STORE_ATTR_INFO_SET_CSTR, ERR_R_MALLOC_FAILURE); diff --git a/src/lib/libcrypto/x509/x509_trs.c b/src/lib/libcrypto/x509/x509_trs.c index 544fb5e884..d4e6be65e6 100644 --- a/src/lib/libcrypto/x509/x509_trs.c +++ b/src/lib/libcrypto/x509/x509_trs.c @@ -1,4 +1,4 @@ -/* $OpenBSD: x509_trs.c,v 1.16 2014/09/28 10:52:59 miod Exp $ */ +/* $OpenBSD: x509_trs.c,v 1.17 2014/10/16 03:19:02 beck Exp $ */ /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL * project 1999. */ @@ -57,6 +57,7 @@ */ #include +#include #include #include @@ -202,7 +203,7 @@ X509_TRUST_add(int id, int flags, int (*ck)(X509_TRUST *, X509 *, int), if (trtmp->flags & X509_TRUST_DYNAMIC_NAME) free(trtmp->name); /* dup supplied name */ - if ((trtmp->name = BUF_strdup(name)) == NULL) + if (name == NULL || (trtmp->name = strdup(name)) == NULL) goto err; /* Keep the dynamic flag of existing entry */ trtmp->flags &= X509_TRUST_DYNAMIC; diff --git a/src/lib/libssl/src/crypto/buffer/buffer.h b/src/lib/libssl/src/crypto/buffer/buffer.h index def1943d31..5aa0e3ea47 100644 --- a/src/lib/libssl/src/crypto/buffer/buffer.h +++ b/src/lib/libssl/src/crypto/buffer/buffer.h @@ -1,4 +1,4 @@ -/* $OpenBSD: buffer.h,v 1.13 2014/07/13 14:13:27 beck Exp $ */ +/* $OpenBSD: buffer.h,v 1.14 2014/10/16 03:19:02 beck Exp $ */ /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) * All rights reserved. * @@ -84,17 +84,20 @@ BUF_MEM *BUF_MEM_new(void); void BUF_MEM_free(BUF_MEM *a); int BUF_MEM_grow(BUF_MEM *str, size_t len); int BUF_MEM_grow_clean(BUF_MEM *str, size_t len); +#ifndef LIBRESSL_INTERNAL char * BUF_strdup(const char *str); char * BUF_strndup(const char *str, size_t siz); +#endif void * BUF_memdup(const void *data, size_t siz); void BUF_reverse(unsigned char *out, const unsigned char *in, size_t siz); +#ifndef LIBRESSL_INTERNAL /* safe string functions */ size_t BUF_strlcpy(char *dst, const char *src, size_t siz) __attribute__ ((__bounded__(__string__,1,3))); size_t BUF_strlcat(char *dst, const char *src, size_t siz) __attribute__ ((__bounded__(__string__,1,3))); - +#endif /* BEGIN ERROR CODES */ /* The following lines are auto generated by the script mkerr.pl. Any changes diff --git a/src/lib/libssl/src/crypto/store/str_lib.c b/src/lib/libssl/src/crypto/store/str_lib.c index ff00aa19ce..9ae93b6405 100644 --- a/src/lib/libssl/src/crypto/store/str_lib.c +++ b/src/lib/libssl/src/crypto/store/str_lib.c @@ -1,4 +1,4 @@ -/* $OpenBSD: str_lib.c,v 1.10 2014/07/10 22:45:58 jsing Exp $ */ +/* $OpenBSD: str_lib.c,v 1.11 2014/10/16 03:19:02 beck Exp $ */ /* Written by Richard Levitte (richard@levitte.org) for the OpenSSL * project 2003. */ @@ -1341,7 +1341,7 @@ STORE_ATTR_INFO_set_cstr(STORE_ATTR_INFO *attrs, STORE_ATTR_TYPES code, return 0; } if (!ATTR_IS_SET(attrs, code)) { - if ((attrs->values[code].cstring = BUF_strndup(cstr, cstr_size))) + if (cstr && (attrs->values[code].cstring = strndup(cstr, cstr_size))) return 1; STOREerr(STORE_F_STORE_ATTR_INFO_SET_CSTR, ERR_R_MALLOC_FAILURE); diff --git a/src/lib/libssl/src/crypto/x509/x509_trs.c b/src/lib/libssl/src/crypto/x509/x509_trs.c index 544fb5e884..d4e6be65e6 100644 --- a/src/lib/libssl/src/crypto/x509/x509_trs.c +++ b/src/lib/libssl/src/crypto/x509/x509_trs.c @@ -1,4 +1,4 @@ -/* $OpenBSD: x509_trs.c,v 1.16 2014/09/28 10:52:59 miod Exp $ */ +/* $OpenBSD: x509_trs.c,v 1.17 2014/10/16 03:19:02 beck Exp $ */ /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL * project 1999. */ @@ -57,6 +57,7 @@ */ #include +#include #include #include @@ -202,7 +203,7 @@ X509_TRUST_add(int id, int flags, int (*ck)(X509_TRUST *, X509 *, int), if (trtmp->flags & X509_TRUST_DYNAMIC_NAME) free(trtmp->name); /* dup supplied name */ - if ((trtmp->name = BUF_strdup(name)) == NULL) + if (name == NULL || (trtmp->name = strdup(name)) == NULL) goto err; /* Keep the dynamic flag of existing entry */ trtmp->flags &= X509_TRUST_DYNAMIC; diff --git a/src/lib/libssl/src/ssl/ssl_asn1.c b/src/lib/libssl/src/ssl/ssl_asn1.c index 627acbf5b0..8dc24d5283 100644 --- a/src/lib/libssl/src/ssl/ssl_asn1.c +++ b/src/lib/libssl/src/ssl/ssl_asn1.c @@ -1,4 +1,4 @@ -/* $OpenBSD: ssl_asn1.c,v 1.37 2014/07/13 23:34:39 jsing Exp $ */ +/* $OpenBSD: ssl_asn1.c,v 1.38 2014/10/16 03:19:02 beck Exp $ */ /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) * All rights reserved. * @@ -585,7 +585,7 @@ d2i_SSL_SESSION(SSL_SESSION **a, const unsigned char **pp, long length) c.slen -= (c.p - c.q); } if (os.data) { - ret->tlsext_hostname = BUF_strndup((char *)os.data, os.length); + ret->tlsext_hostname = strndup((char *)os.data, os.length); free(os.data); os.data = NULL; os.length = 0; diff --git a/src/lib/libssl/ssl_asn1.c b/src/lib/libssl/ssl_asn1.c index 627acbf5b0..8dc24d5283 100644 --- a/src/lib/libssl/ssl_asn1.c +++ b/src/lib/libssl/ssl_asn1.c @@ -1,4 +1,4 @@ -/* $OpenBSD: ssl_asn1.c,v 1.37 2014/07/13 23:34:39 jsing Exp $ */ +/* $OpenBSD: ssl_asn1.c,v 1.38 2014/10/16 03:19:02 beck Exp $ */ /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) * All rights reserved. * @@ -585,7 +585,7 @@ d2i_SSL_SESSION(SSL_SESSION **a, const unsigned char **pp, long length) c.slen -= (c.p - c.q); } if (os.data) { - ret->tlsext_hostname = BUF_strndup((char *)os.data, os.length); + ret->tlsext_hostname = strndup((char *)os.data, os.length); free(os.data); os.data = NULL; os.length = 0; -- cgit v1.2.3-55-g6feb