Fix two compiler warnings resulting from last zlib bump
authortb <tb@openbsd.org>
Wed, 10 Aug 2022 07:58:04 +0000 (07:58 +0000)
committertb <tb@openbsd.org>
Wed, 10 Aug 2022 07:58:04 +0000 (07:58 +0000)
total_out is now an unsigned long, so a format string warning is issued
on all architectures. Fix this and also fix the format string for the
off_t len, which is signed, not unsigned.

Comparing an unsigned long to an off_t involves implementation-defined
behavior for values > LONG_MAX on 64-bit architectures, so the compiler
complains. Fix this by checking that len >= 0 and then casting both sides
to a wider type.

reported by and ok deraadt

usr.bin/ctfdump/ctfdump.c

index 945cfc8..62d7a13 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: ctfdump.c,v 1.25 2022/02/10 23:40:09 bluhm Exp $ */
+/*     $OpenBSD: ctfdump.c,v 1.26 2022/08/10 07:58:04 tb Exp $ */
 
 /*
  * Copyright (c) 2016 Martin Pieuchot <mpi@openbsd.org>
@@ -699,8 +699,8 @@ decompress(const char *buf, size_t size, off_t len)
                goto exit;
        }
 
-       if (stream.total_out != len) {
-               warnx("decompression failed: %llu != %llu",
+       if (len < 0 || (uintmax_t)stream.total_out != (uintmax_t)len) {
+               warnx("decompression failed: %lu != %lld",
                    stream.total_out, len);
                goto exit;
        }