diff options
author | Justin Hibbits <jhibbits@FreeBSD.org> | 2022-02-10 15:21:36 +0000 |
---|---|---|
committer | Justin Hibbits <jhibbits@FreeBSD.org> | 2022-02-10 15:34:37 +0000 |
commit | 6db44b0158c37f2206f2c4ea7f29f5b774389e54 (patch) | |
tree | 38a8ad71698318064718fddbf30fa7a428ab85dc | |
parent | b51927b7b018d268c91b2127d82786caf68254de (diff) | |
download | src-6db44b0158c37f2206f2c4ea7f29f5b774389e54.tar.gz src-6db44b0158c37f2206f2c4ea7f29f5b774389e54.zip |
Fix gzip compressed core dumps on big endian architectures
The gzip trailer words (size and CRC) are both little-endian per the spec.
MFC after: 3 days
Sponsored by: Juniper Networks, Inc.
-rw-r--r-- | sys/kern/subr_compressor.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/sys/kern/subr_compressor.c b/sys/kern/subr_compressor.c index b202d271cfa3..74526a949437 100644 --- a/sys/kern/subr_compressor.c +++ b/sys/kern/subr_compressor.c @@ -41,6 +41,7 @@ __FBSDID("$FreeBSD$"); #include <sys/systm.h> #include <sys/compressor.h> +#include <sys/endian.h> #include <sys/kernel.h> #include <sys/linker_set.h> #include <sys/malloc.h> @@ -201,9 +202,9 @@ gz_write(void *stream, void *data, size_t len, compressor_cb_t cb, * Try to pack as much of the trailer into the * output buffer as we can. */ - ((uint32_t *)trailer)[0] = s->gz_crc; + ((uint32_t *)trailer)[0] = htole32(s->gz_crc); ((uint32_t *)trailer)[1] = - s->gz_stream.total_in; + htole32(s->gz_stream.total_in); room = MIN(sizeof(trailer), s->gz_bufsz - len); memcpy(s->gz_buffer + len, trailer, room); |