diff options
author | Richard Levitte <levitte@openssl.org> | 2003-04-29 22:08:57 +0000 |
---|---|---|
committer | Richard Levitte <levitte@openssl.org> | 2003-04-29 22:08:57 +0000 |
commit | 1ae0a83bdd37cdbe09d6612b7d50627dbabbe882 (patch) | |
tree | 5b2f807ec89ce7d9c1312812a5147bbb7913cf1e /crypto/buffer/buffer.c | |
parent | 7ae46c676142a675ea3fd0c8ca66d2cbc6a5a30e (diff) |
Add BUF_strndup() and BUF_memdup(). Not currently used, but I've code
that uses them that I'll commit in a few days.
Diffstat (limited to 'crypto/buffer/buffer.c')
-rw-r--r-- | crypto/buffer/buffer.c | 29 |
1 files changed, 24 insertions, 5 deletions
diff --git a/crypto/buffer/buffer.c b/crypto/buffer/buffer.c index d96487e7db..03ebf23a14 100644 --- a/crypto/buffer/buffer.c +++ b/crypto/buffer/buffer.c @@ -164,22 +164,41 @@ int BUF_MEM_grow_clean(BUF_MEM *str, int len) char *BUF_strdup(const char *str) { + if (str == NULL) return(NULL); + return BUF_strndup(str, strlen(str)); + } + +char *BUF_strndup(const char *str, size_t siz) + { char *ret; - int n; if (str == NULL) return(NULL); - n=strlen(str); - ret=OPENSSL_malloc(n+1); + ret=OPENSSL_malloc(siz+1); if (ret == NULL) { - BUFerr(BUF_F_BUF_STRDUP,ERR_R_MALLOC_FAILURE); + BUFerr(BUF_F_BUF_STRNDUP,ERR_R_MALLOC_FAILURE); return(NULL); } - memcpy(ret,str,n+1); + BUF_strlcpy(ret,str,siz+1); return(ret); } +void *BUF_memdup(const void *data, size_t siz) + { + void *ret; + + if (data == NULL) return(NULL); + + ret=OPENSSL_malloc(siz); + if (ret == NULL) + { + BUFerr(BUF_F_BUF_MEMDUP,ERR_R_MALLOC_FAILURE); + return(NULL); + } + return memcpy(ret, data, siz); + } + size_t BUF_strlcpy(char *dst, const char *src, size_t size) { size_t l = 0; |