After tar_close(), libtar.c releases the memory pointed to by pointer t. After tar_close() is called in the list() function, it continues to use pointer t: free_longlink_longname(t->th_buf) . As a result, the released memory is used (use-after-free).
https://www.openeuler.org/en/security/cve/detail/?cveId=CVE-2021-33640&packageName=libtar