Fix segment size in compressing core dumps

A core segment is bounded in size only by memory size.  On 64-bit
architectures this means a segment can be much larger than 4GB.
However, compress_chunk() takes only a u_int, clamping segment size to
4GB-1, resulting in a truncated core.  Everything else, including the
compressor internally, uses size_t, so use size_t at the boundary here.

This dates back to the original refactor back in 2015 (r279801 /
aa14e9b7).

MFC after:	1 week
Sponsored by:	Juniper Networks, Inc.
This commit is contained in:
Justin Hibbits 2021-10-01 13:39:18 -05:00
parent 0177102173
commit 63cb9308a7

View file

@ -1884,9 +1884,9 @@ exec_unregister(const struct execsw *execsw_arg)
* Write out a core segment to the compression stream.
*/
static int
compress_chunk(struct coredump_params *cp, char *base, char *buf, u_int len)
compress_chunk(struct coredump_params *cp, char *base, char *buf, size_t len)
{
u_int chunk_len;
size_t chunk_len;
int error;
while (len > 0) {