mirror of
https://github.com/moparisthebest/wget
synced 2024-07-03 16:38:41 -04:00
Fix memory leak.
This commit is contained in:
parent
0a8a898fbe
commit
586ade4fb1
@ -1,3 +1,8 @@
|
|||||||
|
2012-01-27 Gijs van Tulder <gvtulder@gmail.com>
|
||||||
|
|
||||||
|
* retr.c (fd_read_body): Fix a memory leak with chunked responses.
|
||||||
|
* http.c (skip_short_body): Fix the same memory leak.
|
||||||
|
|
||||||
2012-01-09 Gijs van Tulder <gvtulder@gmail.com>
|
2012-01-09 Gijs van Tulder <gvtulder@gmail.com>
|
||||||
|
|
||||||
* init.c: Disable WARC compression if zlib is disabled.
|
* init.c: Disable WARC compression if zlib is disabled.
|
||||||
|
14
src/http.c
14
src/http.c
@ -951,9 +951,12 @@ skip_short_body (int fd, wgint contlen, bool chunked)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
remaining_chunk_size = strtol (line, &endl, 16);
|
remaining_chunk_size = strtol (line, &endl, 16);
|
||||||
|
xfree (line);
|
||||||
|
|
||||||
if (remaining_chunk_size == 0)
|
if (remaining_chunk_size == 0)
|
||||||
{
|
{
|
||||||
fd_read_line (fd);
|
line = fd_read_line (fd);
|
||||||
|
xfree_null (line);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -978,8 +981,13 @@ skip_short_body (int fd, wgint contlen, bool chunked)
|
|||||||
{
|
{
|
||||||
remaining_chunk_size -= ret;
|
remaining_chunk_size -= ret;
|
||||||
if (remaining_chunk_size == 0)
|
if (remaining_chunk_size == 0)
|
||||||
if (fd_read_line (fd) == NULL)
|
{
|
||||||
return false;
|
char *line = fd_read_line (fd);
|
||||||
|
if (line == NULL)
|
||||||
|
return false;
|
||||||
|
else
|
||||||
|
xfree (line);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Safe even if %.*s bogusly expects terminating \0 because
|
/* Safe even if %.*s bogusly expects terminating \0 because
|
||||||
|
22
src/retr.c
22
src/retr.c
@ -307,11 +307,16 @@ fd_read_body (int fd, FILE *out, wgint toread, wgint startpos,
|
|||||||
}
|
}
|
||||||
|
|
||||||
remaining_chunk_size = strtol (line, &endl, 16);
|
remaining_chunk_size = strtol (line, &endl, 16);
|
||||||
|
xfree (line);
|
||||||
|
|
||||||
if (remaining_chunk_size == 0)
|
if (remaining_chunk_size == 0)
|
||||||
{
|
{
|
||||||
ret = 0;
|
ret = 0;
|
||||||
if (fd_read_line (fd) == NULL)
|
line = fd_read_line (fd);
|
||||||
|
if (line == NULL)
|
||||||
ret = -1;
|
ret = -1;
|
||||||
|
else
|
||||||
|
xfree (line);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -371,11 +376,16 @@ fd_read_body (int fd, FILE *out, wgint toread, wgint startpos,
|
|||||||
{
|
{
|
||||||
remaining_chunk_size -= ret;
|
remaining_chunk_size -= ret;
|
||||||
if (remaining_chunk_size == 0)
|
if (remaining_chunk_size == 0)
|
||||||
if (fd_read_line (fd) == NULL)
|
{
|
||||||
{
|
char *line = fd_read_line (fd);
|
||||||
ret = -1;
|
if (line == NULL)
|
||||||
break;
|
{
|
||||||
}
|
ret = -1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
xfree (line);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user