diff options
author | Yoshihiro Ota <ota@j.email.ne.jp> | 2021-09-26 06:28:43 +0000 |
---|---|---|
committer | Xin LI <delphij@FreeBSD.org> | 2021-09-26 06:33:00 +0000 |
commit | cb17f4a6bdaf133bdc658b8ed92ad2c62eff8a18 (patch) | |
tree | af31383d6965ebc5196257d529630c8d5e53e384 | |
parent | fb640be4e9443f1890680c27b213825300bc65f4 (diff) | |
download | src-cb17f4a6bdaf133bdc658b8ed92ad2c62eff8a18.tar.gz src-cb17f4a6bdaf133bdc658b8ed92ad2c62eff8a18.zip |
kern_ctf: Use zlib's uncompress function for simpler code.
Reviewed by: markj, delphij
MFC after: 2 weeks
Differential Revision: https://reviews.freebsd.org/D21531
-rw-r--r-- | sys/kern/kern_ctf.c | 24 |
1 files changed, 7 insertions, 17 deletions
diff --git a/sys/kern/kern_ctf.c b/sys/kern/kern_ctf.c index 6a6a08033137..ee7576ab6fb9 100644 --- a/sys/kern/kern_ctf.c +++ b/sys/kern/kern_ctf.c @@ -244,7 +244,7 @@ link_elf_ctf_get(linker_file_t lf, linker_ctf_t *lc) /* Check if decompression is required. */ if (raw != NULL) { - z_stream zs; + uLongf destlen; int ret; /* @@ -253,22 +253,12 @@ link_elf_ctf_get(linker_file_t lf, linker_ctf_t *lc) */ bcopy(ctf_hdr, ctftab, sizeof(ctf_hdr)); - /* Initialise the zlib structure. */ - bzero(&zs, sizeof(zs)); - - if (inflateInit(&zs) != Z_OK) { - error = EIO; - goto out; - } - - zs.avail_in = shdr[i].sh_size - sizeof(ctf_hdr); - zs.next_in = ((uint8_t *) raw) + sizeof(ctf_hdr); - zs.avail_out = sz - sizeof(ctf_hdr); - zs.next_out = ((uint8_t *) ctftab) + sizeof(ctf_hdr); - ret = inflate(&zs, Z_FINISH); - inflateEnd(&zs); - if (ret != Z_STREAM_END) { - printf("%s(%d): zlib inflate returned %d\n", __func__, __LINE__, ret); + destlen = sz - sizeof(ctf_hdr); + ret = uncompress(((uint8_t *) ctftab) + sizeof(ctf_hdr), + &destlen, ((uint8_t *) raw) + sizeof(ctf_hdr), + shdr[i].sh_size - sizeof(ctf_hdr)); + if (ret != Z_OK) { + printf("%s(%d): zlib uncompress returned %d\n", __func__, __LINE__, ret); error = EIO; goto out; } |