-/* crypto/o_str.c */
/*
* Written by Richard Levitte (richard@levitte.org) for the OpenSSL project
* 2003.
char *CRYPTO_strdup(const char *str, const char* file, int line)
{
char *ret;
+ size_t size;
if (str == NULL)
return NULL;
- ret = CRYPTO_malloc(strlen(str) + 1, file, line);
+ size = strlen(str) + 1;
+ ret = CRYPTO_malloc(size, file, line);
if (ret != NULL)
- strcpy(ret, str);
+ memcpy(ret, str, size);
return ret;
}
char *CRYPTO_strndup(const char *str, size_t s, const char* file, int line)
{
- const char *cp;
size_t maxlen;
char *ret;
if (str == NULL)
return NULL;
- /* Get length. */
- for (cp = str, maxlen = s; maxlen-- != 0 && *cp != '\0'; ++cp)
- continue;
- maxlen = cp - str;
+ maxlen = OPENSSL_strnlen(str, s);
ret = CRYPTO_malloc(maxlen + 1, file, line);
if (ret) {