Ensure that x**0 mod 1 = 0.
[oweals/openssl.git] / crypto / buffer / buf_str.c
index 84236c7671bc3ce7fd6402809bafc3d3e742c777..12ef1fa0649694d68bd7565f3112a9c6cdc77967 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; maxlen-- != 0 && *p != '\0'; ++p)
+               ;
+
+       return p - str;
+       }
+
 char *BUF_strdup(const char *str)
        {
        if (str == NULL) return(NULL);
@@ -69,13 +79,10 @@ char *BUF_strdup(const char *str)
 char *BUF_strndup(const char *str, size_t siz)
        {
        char *ret;
-       size_t len;
 
        if (str == NULL) return(NULL);
 
-       len = strlen(str);
-       if (siz > len)
-           siz = len;
+       siz = BUF_strnlen(str, siz);
 
        ret=OPENSSL_malloc(siz+1);
        if (ret == NULL)