Fix a type promotion bug discivered and analyzed by Alan Modra
authorEric Andersen <andersen@codepoet.org>
Wed, 27 Jun 2001 06:15:50 +0000 (06:15 -0000)
committerEric Andersen <andersen@codepoet.org>
Wed, 27 Jun 2001 06:15:50 +0000 (06:15 -0000)
<amodra@bigpond.net.au>, which caused false checksum errors

archival/libunarchive/decompress_unzip.c
archival/libunarchive/unzip.c
libbb/unzip.c

index 7de28930ae2f9828cf546355f3ed2fb362e371bc..40b8af427d2f3761226df63f03c2512c52e979cb 100644 (file)
@@ -997,7 +997,7 @@ extern int unzip(FILE *l_in_file, FILE *l_out_file)
        fread(buf, 1, 8, in_file);
 
        /* Validate decompression - crc */
-       if (((buf[0] | (buf[1] << 8)) |((buf[2] | (buf[3] << 8)) << 16)) != (crc ^ 0xffffffffL)) {
+       if ((unsigned int)((buf[0] | (buf[1] << 8)) |((buf[2] | (buf[3] << 8)) << 16)) != (crc ^ 0xffffffffL)) {
                error_msg("invalid compressed data--crc error");
        }
        /* Validate decompression - size */
index 7de28930ae2f9828cf546355f3ed2fb362e371bc..40b8af427d2f3761226df63f03c2512c52e979cb 100644 (file)
@@ -997,7 +997,7 @@ extern int unzip(FILE *l_in_file, FILE *l_out_file)
        fread(buf, 1, 8, in_file);
 
        /* Validate decompression - crc */
-       if (((buf[0] | (buf[1] << 8)) |((buf[2] | (buf[3] << 8)) << 16)) != (crc ^ 0xffffffffL)) {
+       if ((unsigned int)((buf[0] | (buf[1] << 8)) |((buf[2] | (buf[3] << 8)) << 16)) != (crc ^ 0xffffffffL)) {
                error_msg("invalid compressed data--crc error");
        }
        /* Validate decompression - size */
index 7de28930ae2f9828cf546355f3ed2fb362e371bc..40b8af427d2f3761226df63f03c2512c52e979cb 100644 (file)
@@ -997,7 +997,7 @@ extern int unzip(FILE *l_in_file, FILE *l_out_file)
        fread(buf, 1, 8, in_file);
 
        /* Validate decompression - crc */
-       if (((buf[0] | (buf[1] << 8)) |((buf[2] | (buf[3] << 8)) << 16)) != (crc ^ 0xffffffffL)) {
+       if ((unsigned int)((buf[0] | (buf[1] << 8)) |((buf[2] | (buf[3] << 8)) << 16)) != (crc ^ 0xffffffffL)) {
                error_msg("invalid compressed data--crc error");
        }
        /* Validate decompression - size */