projects
/
pspp
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
6e03317
)
zip-reader: Fix memory leak on error path in zip_reader_create().
author
Ben Pfaff
<blp@cs.stanford.edu>
Sun, 16 Jul 2017 00:08:10 +0000
(17:08 -0700)
committer
Ben Pfaff
<blp@cs.stanford.edu>
Sun, 10 Feb 2019 00:00:47 +0000
(16:00 -0800)
src/libpspp/zip-reader.c
patch
|
blob
|
history
diff --git
a/src/libpspp/zip-reader.c
b/src/libpspp/zip-reader.c
index 92a67649fdae6b44f9025c42d2153207256fcd4b..0f8c26332868f83699e460474e6c635ec5288d04 100644
(file)
--- a/
src/libpspp/zip-reader.c
+++ b/
src/libpspp/zip-reader.c
@@
-354,14
+354,19
@@
zip_reader_create (const char *filename, struct string *errs)
return NULL;
}
return NULL;
}
- if (! get_u16 (zr->fr, &disknum)
) return NULL;
- if (! get_u16 (zr->fr, &disknum)) return NULL;
+ if (! get_u16 (zr->fr, &disknum)
+ || ! get_u16 (zr->fr, &disknum)
- if (! get_u16 (zr->fr, &zr->n_members)) return NULL;
- if (! get_u16 (zr->fr, &total_members)) return NULL;
+ || ! get_u16 (zr->fr, &zr->n_members)
+ || ! get_u16 (zr->fr, &total_members)
- if (! get_u32 (zr->fr, ¢ral_dir_length)) return NULL;
- if (! get_u32 (zr->fr, ¢ral_dir_start)) return NULL;
+ || ! get_u32 (zr->fr, ¢ral_dir_length)
+ || ! get_u32 (zr->fr, ¢ral_dir_start))
+ {
+ fclose (zr->fr);
+ free (zr);
+ return NULL;
+ }
if ( 0 != fseeko (zr->fr, central_dir_start, SEEK_SET))
{
if ( 0 != fseeko (zr->fr, central_dir_start, SEEK_SET))
{