summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorespie <espie@openbsd.org>1999-09-26 14:04:58 +0000
committerespie <espie@openbsd.org>1999-09-26 14:04:58 +0000
commit205c3895eb598d07349fa8f808e74c172b18a5e3 (patch)
treedd5e2756cc8c27d3387a3bf3104490d17c14eac4
parentnetbsd_sendsig() + supporting code (diff)
downloadwireguard-openbsd-205c3895eb598d07349fa8f808e74c172b18a5e3.tar.xz
wireguard-openbsd-205c3895eb598d07349fa8f808e74c172b18a5e3.zip
read/write, and compressor->read/write results are signed values.
Adjust types and error checks, so that error checking actually occurs. [This lets cat garbage|zcat correctly detect bad headers instead of dumping core]
-rw-r--r--usr.bin/compress/main.c16
1 files changed, 8 insertions, 8 deletions
diff --git a/usr.bin/compress/main.c b/usr.bin/compress/main.c
index 3825ff63fb2..5f469c8d280 100644
--- a/usr.bin/compress/main.c
+++ b/usr.bin/compress/main.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: main.c,v 1.10 1998/09/10 06:44:41 deraadt Exp $ */
+/* $OpenBSD: main.c,v 1.11 1999/09/26 14:04:58 espie Exp $ */
/*-
* Copyright (c) 1992, 1993
@@ -41,7 +41,7 @@ static char copyright[] =
#if 0
static char sccsid[] = "@(#)compress.c 8.2 (Berkeley) 1/7/94";
#else
-static char rcsid[] = "$OpenBSD: main.c,v 1.10 1998/09/10 06:44:41 deraadt Exp $";
+static char rcsid[] = "$OpenBSD: main.c,v 1.11 1999/09/26 14:04:58 espie Exp $";
#endif
#endif /* not lint */
@@ -331,7 +331,7 @@ compress(in, out, method, bits)
register int ifd;
int ofd;
register void *cookie;
- register size_t nr;
+ register ssize_t nr;
u_char buf[Z_BUFSIZE];
int error;
@@ -354,7 +354,7 @@ compress(in, out, method, bits)
if ((ifd = open(in, O_RDONLY)) >= 0 &&
(cookie = (*method->open)(ofd, "w", bits)) != NULL) {
- while ((nr = read(ifd, buf, sizeof(buf))) > 0)
+ while ((nr = read(ifd, buf, sizeof(buf))) != -1 && nr != 0)
if ((method->write)(cookie, buf, nr) != nr) {
if (verbose >= 0)
warn("%s", out);
@@ -363,7 +363,7 @@ compress(in, out, method, bits)
}
}
- if (ifd < 0 || close(ifd) || nr < 0) {
+ if (ifd < 0 || close(ifd) || nr == -1) {
if (!error && verbose >= 0)
warn("%s", in);
error++;
@@ -408,7 +408,7 @@ decompress(in, out, method, bits)
int ifd;
register int ofd;
register void *cookie;
- register size_t nr;
+ register ssize_t nr;
u_char buf[Z_BUFSIZE];
int error;
@@ -438,7 +438,7 @@ decompress(in, out, method, bits)
if ((ofd = open(out, O_WRONLY|O_CREAT, S_IWUSR)) >= 0 &&
(cookie = (*method->open)(ifd, "r", bits)) != NULL) {
- while ((nr = (method->read)(cookie, buf, sizeof(buf))) > 0)
+ while ((nr = (method->read)(cookie, buf, sizeof(buf))) != -1 && nr != 0)
if (write(ofd, buf, nr) != nr) {
if (verbose >= 0)
warn("%s", out);
@@ -453,7 +453,7 @@ decompress(in, out, method, bits)
error++;
}
- if (cookie == NULL || (method->close)(cookie) || nr < 0) {
+ if (cookie == NULL || (method->close)(cookie) || nr == -1) {
if (!error && verbose >= 0)
warn("%s", in);
error++;