mirror of
https://github.com/moparisthebest/curl
synced 2024-12-21 23:58:49 -05:00
Peter Pentchev found two problems. One realloc problem that could allocate
too little data, and one case of not zero-terminating the returned string. I chose a slightly different patch than the one Peter provided.
This commit is contained in:
parent
f7db3023a8
commit
f193ab4b59
@ -19,12 +19,16 @@ char *appendstring(char *string, /* original string */
|
||||
int *stringlen, int *stralloc)
|
||||
{
|
||||
int len = strlen(buffer);
|
||||
int needed_len = len + *stringlen;
|
||||
|
||||
if((len + *stringlen) >= *stralloc) {
|
||||
char *newptr= realloc(string, *stralloc*2);
|
||||
if(needed_len >= *stralloc) {
|
||||
char *newptr;
|
||||
long newsize = needed_len*2; /* get twice the needed size */
|
||||
|
||||
newptr = realloc(string, newsize);
|
||||
if(newptr) {
|
||||
string = newptr;
|
||||
*stralloc *= 2;
|
||||
*stralloc = newsize;
|
||||
}
|
||||
else
|
||||
return NULL;
|
||||
@ -56,6 +60,10 @@ char *spitout(FILE *stream, char *main, char *sub, int *size)
|
||||
} state = STATE_OUTSIDE;
|
||||
|
||||
string = (char *)malloc(stralloc);
|
||||
if(!string)
|
||||
return NULL;
|
||||
|
||||
string[0] = 0; /* zero first byte in case of no data */
|
||||
|
||||
while(fgets(buffer, sizeof(buffer), stream)) {
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user