From c38fa7e016711fbb846c355ea567a2d6ab52ee3c Mon Sep 17 00:00:00 2001 From: Xin LI Date: Thu, 19 Aug 2010 01:34:00 +0000 Subject: [PATCH] Check return value of dup(), it could be -1 when the system is running out of file descriptors for instance. Found with: Coverity Prevent(tm) CID: 6084 MFC after: 1 month --- usr.bin/gzip/unpack.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/usr.bin/gzip/unpack.c b/usr.bin/gzip/unpack.c index aa1480016d28..cc717a6a95eb 100644 --- a/usr.bin/gzip/unpack.c +++ b/usr.bin/gzip/unpack.c @@ -312,7 +312,14 @@ unpack(int in, int out, char *pre, size_t prelen, off_t *bytes_in) { unpack_descriptor_t unpackd; - unpack_parse_header(dup(in), dup(out), pre, prelen, bytes_in, &unpackd); + in = dup(in); + if (in == -1) + maybe_err("dup"); + out = dup(out); + if (out == -1) + maybe_err("dup"); + + unpack_parse_header(in, out, pre, prelen, bytes_in, &unpackd); unpack_decode(&unpackd, bytes_in); unpack_descriptor_fini(&unpackd);