The branch stable/13 has been updated by delphij:

URL: 
https://cgit.FreeBSD.org/src/commit/?id=85233678087751084de3e67117ac906c3a39418d

commit 85233678087751084de3e67117ac906c3a39418d
Author:     Yoshihiro Ota <[email protected]>
AuthorDate: 2021-09-26 06:28:43 +0000
Commit:     Xin LI <[email protected]>
CommitDate: 2021-10-10 17:08:53 +0000

    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
---
 sys/kern/kern_ctf.c | 24 +++++++-----------------
 1 file 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;
                }

Reply via email to