Security fixes brought forward from 0.9.7.

This commit is contained in:
Ben Laurie
2002-11-13 15:43:43 +00:00
parent 8f797f14b8
commit 54a656ef08
115 changed files with 806 additions and 509 deletions

View File

@@ -125,6 +125,43 @@ int BUF_MEM_grow(BUF_MEM *str, int len)
return(len);
}
int BUF_MEM_grow_clean(BUF_MEM *str, int len)
{
char *ret;
unsigned int n;
if (str->length >= len)
{
memset(&str->data[len],0,str->length-len);
str->length=len;
return(len);
}
if (str->max >= len)
{
memset(&str->data[str->length],0,len-str->length);
str->length=len;
return(len);
}
n=(len+3)/3*4;
if (str->data == NULL)
ret=OPENSSL_malloc(n);
else
ret=OPENSSL_realloc_clean(str->data,str->max,n);
if (ret == NULL)
{
BUFerr(BUF_F_BUF_MEM_GROW,ERR_R_MALLOC_FAILURE);
len=0;
}
else
{
str->data=ret;
str->max=n;
memset(&str->data[str->length],0,len-str->length);
str->length=len;
}
return(len);
}
char *BUF_strdup(const char *str)
{
char *ret;
@@ -143,3 +180,23 @@ char *BUF_strdup(const char *str)
return(ret);
}
size_t BUF_strlcpy(char *dst, const char *src, size_t size)
{
size_t l = 0;
for(; size > 1 && *src; size--)
{
*dst++ = *src++;
l++;
}
if (size)
*dst = '\0';
return l + strlen(src);
}
size_t BUF_strlcat(char *dst, const char *src, size_t size)
{
size_t l = 0;
for(; size > 0 && *dst; size--, dst++)
l++;
return l + BUF_strlcpy(dst, src, size);
}