Implement BUF_strnlen() and use it instead of strlen().
[openssl.git] / crypto / buffer / buf_str.c
index a464eb6e25605eb71df850ebba1c8f45f7a39628..58028ebac72f4f1ecc7578896afe9079101ca603 100644 (file)
 #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;