mirror of
https://github.com/curl/curl.git
synced 2026-08-25 12:23:44 +03:00
- David Binderman found a memory and fd leak in lib/gtls.c:load_file()
(https://bugzilla.novell.com/523919). When looking at the code, I found that also the ptr pointer can leak.
This commit is contained in:
parent
650543a042
commit
4c207a004c
3 changed files with 16 additions and 6 deletions
15
lib/gtls.c
15
lib/gtls.c
|
|
@ -148,17 +148,22 @@ static gnutls_datum load_file (const char *file)
|
|||
long filelen;
|
||||
void *ptr;
|
||||
|
||||
if (!(f = fopen(file, "r"))
|
||||
|| fseek(f, 0, SEEK_END) != 0
|
||||
if (!(f = fopen(file, "r")))
|
||||
return loaded_file;
|
||||
if (fseek(f, 0, SEEK_END) != 0
|
||||
|| (filelen = ftell(f)) < 0
|
||||
|| fseek(f, 0, SEEK_SET) != 0
|
||||
|| !(ptr = malloc((size_t)filelen))
|
||||
|| fread(ptr, 1, (size_t)filelen, f) < (size_t)filelen) {
|
||||
return loaded_file;
|
||||
|| !(ptr = malloc((size_t)filelen)))
|
||||
goto out;
|
||||
if (fread(ptr, 1, (size_t)filelen, f) < (size_t)filelen) {
|
||||
free(ptr);
|
||||
goto out;
|
||||
}
|
||||
|
||||
loaded_file.data = ptr;
|
||||
loaded_file.size = (unsigned int)filelen;
|
||||
out:
|
||||
fclose(f);
|
||||
return loaded_file;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue