BUF_strndup: tidy
Fix comment, add another overflow check, tidy style Reviewed-by: Matt Caswell <matt@openssl.org> (cherry picked from commit de8883e11befde31d9b6cfbbd1fc017c365e0bbf)
This commit is contained in:
parent
f61216ba9d
commit
f5afe9ce3f
@ -73,7 +73,7 @@ size_t BUF_strnlen(const char *str, size_t maxlen)
|
|||||||
char *BUF_strdup(const char *str)
|
char *BUF_strdup(const char *str)
|
||||||
{
|
{
|
||||||
if (str == NULL)
|
if (str == NULL)
|
||||||
return (NULL);
|
return NULL;
|
||||||
return BUF_strndup(str, strlen(str));
|
return BUF_strndup(str, strlen(str));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -82,17 +82,17 @@ char *BUF_strndup(const char *str, size_t siz)
|
|||||||
char *ret;
|
char *ret;
|
||||||
|
|
||||||
if (str == NULL)
|
if (str == NULL)
|
||||||
return (NULL);
|
return NULL;
|
||||||
|
|
||||||
siz = BUF_strnlen(str, siz);
|
siz = BUF_strnlen(str, siz);
|
||||||
|
|
||||||
if (siz >= INT_MAX)
|
if (siz >= INT_MAX)
|
||||||
return (NULL);
|
return NULL;
|
||||||
|
|
||||||
ret = OPENSSL_malloc(siz + 1);
|
ret = OPENSSL_malloc(siz + 1);
|
||||||
if (ret == NULL) {
|
if (ret == NULL) {
|
||||||
BUFerr(BUF_F_BUF_STRNDUP, ERR_R_MALLOC_FAILURE);
|
BUFerr(BUF_F_BUF_STRNDUP, ERR_R_MALLOC_FAILURE);
|
||||||
return (NULL);
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
memcpy(ret, str, siz);
|
memcpy(ret, str, siz);
|
||||||
@ -105,13 +105,13 @@ void *BUF_memdup(const void *data, size_t siz)
|
|||||||
{
|
{
|
||||||
void *ret;
|
void *ret;
|
||||||
|
|
||||||
if (data == NULL)
|
if (data == NULL || siz >= INT_MAX)
|
||||||
return (NULL);
|
return NULL;
|
||||||
|
|
||||||
ret = OPENSSL_malloc(siz);
|
ret = OPENSSL_malloc(siz);
|
||||||
if (ret == NULL) {
|
if (ret == NULL) {
|
||||||
BUFerr(BUF_F_BUF_MEMDUP, ERR_R_MALLOC_FAILURE);
|
BUFerr(BUF_F_BUF_MEMDUP, ERR_R_MALLOC_FAILURE);
|
||||||
return (NULL);
|
return NULL;
|
||||||
}
|
}
|
||||||
return memcpy(ret, data, siz);
|
return memcpy(ret, data, siz);
|
||||||
}
|
}
|
||||||
|
@ -88,8 +88,8 @@ size_t BUF_strnlen(const char *str, size_t maxlen);
|
|||||||
char *BUF_strdup(const char *str);
|
char *BUF_strdup(const char *str);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Returns a pointer to a new string which is a duplicate of the string |str|,
|
* Like strndup, but in addition, explicitly guarantees to never read past the
|
||||||
* but guarantees to never read past the first |siz| bytes of |str|.
|
* first |siz| bytes of |str|.
|
||||||
*/
|
*/
|
||||||
char *BUF_strndup(const char *str, size_t siz);
|
char *BUF_strndup(const char *str, size_t siz);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user