summaryrefslogtreecommitdiffstats
path: root/crypto/buffer
diff options
context:
space:
mode:
authorBen Laurie <ben@links.org>2014-05-21 11:54:54 +0100
committerBen Laurie <ben@links.org>2014-05-21 11:58:03 +0100
commitdea4a18404d448e7bc58ae652f9f4355f1f1e404 (patch)
treec812eeae5511f9a1d9b6b1c7a681d36fa613571e /crypto/buffer
parent397a8e747dc3f964196caed5ca4e08d4b598362a (diff)
Implement BUF_strnlen() and use it instead of strlen().
Diffstat (limited to 'crypto/buffer')
-rw-r--r--crypto/buffer/buf_str.c12
-rw-r--r--crypto/buffer/buffer.h1
2 files changed, 12 insertions, 1 deletions
diff --git a/crypto/buffer/buf_str.c b/crypto/buffer/buf_str.c
index a464eb6e25..58028ebac7 100644
--- a/crypto/buffer/buf_str.c
+++ b/crypto/buffer/buf_str.c
@@ -62,6 +62,16 @@
#include "cryptlib.h"
#include <openssl/buffer.h>
+size_t BUF_strnlen(const char *str, size_t maxlen)
+ {
+ const char *p;
+
+ for (p = str; *p != '\0' && maxlen-- != 0; ++p)
+ ;
+
+ return p - str;
+ }
+
char *BUF_strdup(const char *str)
{
if (str == NULL) return(NULL);
@@ -75,7 +85,7 @@ char *BUF_strndup(const char *str, size_t siz)
if (str == NULL) return(NULL);
- len = strlen(str);
+ len = BUF_strnlen(str, siz);
if (siz > len)
siz = len;
diff --git a/crypto/buffer/buffer.h b/crypto/buffer/buffer.h
index 178e418282..4300d01b3f 100644
--- a/crypto/buffer/buffer.h
+++ b/crypto/buffer/buffer.h
@@ -85,6 +85,7 @@ 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);
+size_t BUF_strnlen(const char *str, size_t maxlen);
char * BUF_strdup(const char *str);
char * BUF_strndup(const char *str, size_t siz);
void * BUF_memdup(const void *data, size_t siz);