io: fix tee error handling path
Make sure the from is not dereferenced/used on error path, and cancel the ostream. fixes #10800cute-signatures
parent
4ccf038a9f
commit
0baf59627b
9
src/io.c
9
src/io.c
|
@ -462,9 +462,12 @@ struct apk_istream *apk_istream_tee(struct apk_istream *from, struct apk_ostream
|
||||||
err_free:
|
err_free:
|
||||||
free(tee);
|
free(tee);
|
||||||
err:
|
err:
|
||||||
if (!IS_ERR(to)) apk_ostream_close(to);
|
if (!IS_ERR(to)) {
|
||||||
if (!IS_ERR(from) && (flags & APK_ISTREAM_TEE_OPTIONAL))
|
apk_ostream_cancel(to, r);
|
||||||
return from;
|
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));
|
return ERR_PTR(apk_istream_close_error(from, r));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue