diff options
author | Timo Teräs <timo.teras@iki.fi> | 2014-10-07 17:03:51 +0300 |
---|---|---|
committer | Timo Teräs <timo.teras@iki.fi> | 2014-10-07 17:04:38 +0300 |
commit | 1bbca16333bb655b73bd80fc40d072fc697e4650 (patch) | |
tree | 01d62ed4910e81ea195e980c6cdf7d1cc69fab62 | |
parent | 09e48d8f06bfb924b80ce3e95c281524c4891828 (diff) | |
download | apk-tools-1bbca16333bb655b73bd80fc40d072fc697e4650.tar.gz apk-tools-1bbca16333bb655b73bd80fc40d072fc697e4650.tar.bz2 apk-tools-1bbca16333bb655b73bd80fc40d072fc697e4650.tar.xz apk-tools-1bbca16333bb655b73bd80fc40d072fc697e4650.zip |
io: fix few error path leaks
-rw-r--r-- | src/gunzip.c | 6 | ||||
-rw-r--r-- | src/io.c | 9 |
2 files changed, 9 insertions, 6 deletions
diff --git a/src/gunzip.c b/src/gunzip.c index bed81df..944132e 100644 --- a/src/gunzip.c +++ b/src/gunzip.c @@ -149,12 +149,10 @@ struct apk_istream *apk_bstream_gunzip_mpart(struct apk_bstream *bs, { struct apk_gzip_istream *gis; - if (bs == NULL) - return NULL; + if (!bs) return NULL; gis = malloc(sizeof(struct apk_gzip_istream)); - if (gis == NULL) - goto err; + if (!gis) goto err; *gis = (struct apk_gzip_istream) { .is.read = gzi_read, @@ -427,14 +427,19 @@ struct apk_bstream *apk_bstream_tee(struct apk_bstream *from, int atfd, const ch struct apk_tee_bstream *tbs; int fd; + if (!from) return NULL; + fd = openat(atfd, to, O_CREAT | O_RDWR | O_TRUNC | O_CLOEXEC, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH); - if (fd < 0) + if (fd < 0) { + from->close(from, NULL); return NULL; + } tbs = malloc(sizeof(struct apk_tee_bstream)); - if (tbs == NULL) { + if (!tbs) { close(fd); + from->close(from, NULL); return NULL; } |