{"id":25952,"date":"2026-09-18T04:32:07","date_gmt":"2026-09-17T20:32:07","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-93095"},"modified":"2026-09-18T04:32:07","modified_gmt":"2026-09-17T20:32:07","slug":"cve-2026-93095","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-93095","title":{"rendered":"CVE-2026-93095 &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\nhfsplus: validate thr"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>hfsplus: validate thread record before delete key rebuild<\/p>\n<p>hfsplus_delete_cat() is called with str == NULL when the last open<br \/>\nreference to an unlinked HFS+ hardlink backing inode is closed. In that<br \/>\ncase, the function finds the catalog thread by CNID and rebuilds the<br \/>\ncatalog key from thread.nodeName.<\/p>\n<p>That reconstruction path reads thread.nodeName.length directly from the<br \/>\ncatalog B-tree into fd.search_key and then copies length * 2 bytes into<br \/>\nfd.search_key-&gt;cat.name.unicode. It does not first check that the found<br \/>\nrecord is a thread record or that its size matches the thread name.<\/p>\n<p>A corrupted image can therefore provide an oversized thread name length<br \/>\nand make hfs_bnode_read() write past the catalog search-key allocation.<\/p>\n<p>Read the CNID record through hfsplus_brec_read_cat(), which bounds the<br \/>\nrecord read to sizeof(hfsplus_cat_entry) and verifies that a thread<br \/>\nrecord&#8217;s size exactly matches nodeName.length. Together, these checks<br \/>\nensure an accepted thread name fits HFSPLUS_MAX_STRLEN. Reject non-thread<br \/>\nrecords before building the delete key from the validated thread name.<\/p>\n<p>Share the thread-record-type helper between hfsplus_find_cat() and<br \/>\nhfsplus_delete_cat().<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>hfsplus: validate thread record before delete key rebuild<\/p>\n<p>hfsplus_delete_cat() is called with str == NULL when the last open<br \/>\nrefer<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-25952","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/25952","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln"}],"about":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/types\/vuln"}],"wp:attachment":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=25952"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=25952"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=25952"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}