diff options
| author | Mathieu Trudel-Lapierre <mathieu.trudel-lapierre@canonical.com> | 2016-09-22 10:15:26 -0400 |
|---|---|---|
| committer | Mathieu Trudel-Lapierre <mathieu.trudel-lapierre@canonical.com> | 2016-09-22 10:15:26 -0400 |
| commit | 5998f019f85f765070f049332bf68d347d60c993 (patch) | |
| tree | 796531832eed643b2fec02ae7f0949e84d152968 /Cryptlib/OpenSSL/crypto/buffer/buf_str.c | |
| parent | e3ef28acdfacfe07c42662d86af2135d1a100c24 (diff) | |
| parent | 62f0afa2ecead02b1258dabab8097ca278a22f8f (diff) | |
| download | efi-boot-shim-5998f019f85f765070f049332bf68d347d60c993.tar.gz efi-boot-shim-5998f019f85f765070f049332bf68d347d60c993.zip | |
New upstream release.
Diffstat (limited to 'Cryptlib/OpenSSL/crypto/buffer/buf_str.c')
| -rw-r--r-- | Cryptlib/OpenSSL/crypto/buffer/buf_str.c | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/Cryptlib/OpenSSL/crypto/buffer/buf_str.c b/Cryptlib/OpenSSL/crypto/buffer/buf_str.c index ebc5ab46..fa0d608e 100644 --- a/Cryptlib/OpenSSL/crypto/buffer/buf_str.c +++ b/Cryptlib/OpenSSL/crypto/buffer/buf_str.c @@ -58,6 +58,7 @@ #include <stdio.h> #include "cryptlib.h" +#include <limits.h> #include <openssl/buffer.h> size_t BUF_strnlen(const char *str, size_t maxlen) @@ -72,7 +73,7 @@ size_t BUF_strnlen(const char *str, size_t maxlen) char *BUF_strdup(const char *str) { if (str == NULL) - return (NULL); + return NULL; return BUF_strndup(str, strlen(str)); } @@ -81,16 +82,22 @@ char *BUF_strndup(const char *str, size_t siz) char *ret; if (str == NULL) - return (NULL); + return NULL; siz = BUF_strnlen(str, siz); + if (siz >= INT_MAX) + return NULL; + ret = OPENSSL_malloc(siz + 1); if (ret == NULL) { BUFerr(BUF_F_BUF_STRNDUP, ERR_R_MALLOC_FAILURE); - return (NULL); + return NULL; } - BUF_strlcpy(ret, str, siz + 1); + + memcpy(ret, str, siz); + ret[siz] = '\0'; + return (ret); } @@ -98,13 +105,13 @@ void *BUF_memdup(const void *data, size_t siz) { void *ret; - if (data == NULL) - return (NULL); + if (data == NULL || siz >= INT_MAX) + return NULL; ret = OPENSSL_malloc(siz); if (ret == NULL) { BUFerr(BUF_F_BUF_MEMDUP, ERR_R_MALLOC_FAILURE); - return (NULL); + return NULL; } return memcpy(ret, data, siz); } |
