2760f15b81
Unportable left shift reported with MKSANITIZER=yes USE_SANITIZER=undefined: # progress -zf ./games.tgz tar -xp -C "./" -f - /public/src.git/usr.bin/gzip/gzip.c:2126:33: runtime error: left shift of 251 by 24 places cannot be represented in type 'int' 100% |****************************************************************************************************************| 44500 KiB 119.69 MiB/s 00:00 ETA Refactor the following code into something that is more clear and fix signed integer shift, by casting all buf[] elements to (unsigned int): unsigned char buf[8]; uint32_t usize; [...] else { usize = buf[4] | buf[5] << 8 | buf[6] << 16 | buf[7] << 24; [...] New version: usize = buf[4]; usize |= (unsigned int)buf[5] << 8; usize |= (unsigned int)buf[6] << 16; usize |= (unsigned int)buf[7] << 24; Only the "<< 24" part needs explicit cast, but for consistency make the integer promotion explicit and clear to a code reader. Sponsored by <The NetBSD Foundation> |
||
---|---|---|
.. | ||
Makefile | ||
gzexe | ||
gzexe.1 | ||
gzip.1 | ||
gzip.c | ||
unbzip2.c | ||
unpack.c | ||
unxz.c | ||
zdiff | ||
zdiff.1 | ||
zforce | ||
zforce.1 | ||
zgrep | ||
zgrep.1 | ||
zmore | ||
zmore.1 | ||
znew | ||
znew.1 | ||
zuncompress.c |