From 0baf59627bb62a72de99ed05c77f6e39be00cd03 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20Ter=C3=A4s?= Date: Mon, 27 Dec 2021 10:20:03 +0200 Subject: [PATCH] io: fix tee error handling path Make sure the from is not dereferenced/used on error path, and cancel the ostream. fixes #10800 --- src/io.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/io.c b/src/io.c index 9f152f6..5c14ae1 100644 --- a/src/io.c +++ b/src/io.c @@ -462,9 +462,12 @@ struct apk_istream *apk_istream_tee(struct apk_istream *from, struct apk_ostream err_free: free(tee); err: - if (!IS_ERR(to)) apk_ostream_close(to); - if (!IS_ERR(from) && (flags & APK_ISTREAM_TEE_OPTIONAL)) - return from; + if (!IS_ERR(to)) { + apk_ostream_cancel(to, r); + apk_ostream_close(to); + } + if (IS_ERR(from)) return ERR_CAST(from); + if (flags & APK_ISTREAM_TEE_OPTIONAL) return from; return ERR_PTR(apk_istream_close_error(from, r)); }