/* Convert unsigned char buf's that shouldn't contain any NUL-bytes to char. */ static char *dup_str(const unsigned char *in, size_t len) { char *ret; if(len == 0) return NULL; /* Assert that the string does not contain NUL-bytes. */ OPENSSL_assert(OPENSSL_strnlen((const char*)(in), len) == len); ret = OPENSSL_strndup((const char*)(in), len); OPENSSL_assert(ret != NULL); return ret; }
char *CRYPTO_strndup(const char *str, size_t s, const char* file, int line) { size_t maxlen; char *ret; if (str == NULL) return NULL; maxlen = OPENSSL_strnlen(str, s); ret = CRYPTO_malloc(maxlen + 1, file, line); if (ret) { memcpy(ret, str, maxlen); ret[maxlen] = '\0'; } return ret; }