next = __builtin_bswap32 (next);
#endif
#else
- next = pin[0] | (pin[1] << 8) | (pin[2] << 16) | (pin[3] << 24);
+ next = ((uint32_t)pin[0]
+ | ((uint32_t)pin[1] << 8)
+ | ((uint32_t)pin[2] << 16)
+ | ((uint32_t)pin[3] << 24));
#endif
val |= (uint64_t)next << bits;
next = __builtin_bswap32 (next);
#endif
#else
- next = pin[0] | (pin[1] << 8) | (pin[2] << 16) | (pin[3] << 24);
+ next = ((uint32_t)pin[0]
+ | ((uint32_t)pin[1] << 8)
+ | ((uint32_t)pin[2] << 16)
+ | ((uint32_t)pin[3] << 24));
#endif
val <<= 32;
/* The byte at compressed[off] is ignored for some
reason. */
- code = ((compressed[off + 1] << 24)
- + (compressed[off + 2] << 16)
- + (compressed[off + 3] << 8)
- + compressed[off + 4]);
+ code = ((uint32_t)(compressed[off + 1] << 24)
+ + ((uint32_t)compressed[off + 2] << 16)
+ + ((uint32_t)compressed[off + 3] << 8)
+ + (uint32_t)compressed[off + 4]);
off += 5;
/* This is the main LZMA decode loop. */
return 0;
}
computed_crc = elf_crc32 (0, uncompressed, uncompressed_offset);
- stream_crc = (compressed[off]
- | (compressed[off + 1] << 8)
- | (compressed[off + 2] << 16)
- | (compressed[off + 3] << 24));
+ stream_crc = ((uint32_t)compressed[off]
+ | ((uint32_t)compressed[off + 1] << 8)
+ | ((uint32_t)compressed[off + 2] << 16)
+ | ((uint32_t)compressed[off + 3] << 24));
if (computed_crc != stream_crc)
{
elf_uncompress_failed ();
/* Before that is the size of the index field, which precedes the
footer. */
- index_size = (compressed[offset - 4]
- | (compressed[offset - 3] << 8)
- | (compressed[offset - 2] << 16)
- | (compressed[offset - 1] << 24));
+ index_size = ((size_t)compressed[offset - 4]
+ | ((size_t)compressed[offset - 3] << 8)
+ | ((size_t)compressed[offset - 2] << 16)
+ | ((size_t)compressed[offset - 1] << 24));
index_size = (index_size + 1) * 4;
offset -= 4;