From 04db39f161714874c6ca6560e930e4e5a91c1d1b Mon Sep 17 00:00:00 2001 From: Nikolai SAOUKH Date: Mon, 17 Aug 2020 19:05:14 +0300 Subject: [PATCH] Fix case folding name compare in btree code Remove folding of 0x0000 char to invalid unicode char 0xFFFF. Fix false match when name in the btree on disk is the prefix of longer search key. --- Staging/VBoxHfs/fsw_hfs.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Staging/VBoxHfs/fsw_hfs.c b/Staging/VBoxHfs/fsw_hfs.c index 9ca3d0f1..a5b3565d 100644 --- a/Staging/VBoxHfs/fsw_hfs.c +++ b/Staging/VBoxHfs/fsw_hfs.c @@ -1042,20 +1042,20 @@ fsw_hfs_cmpf_catkey (BTreeKey *btkey1, BTreeKey *btkey2) for (ac = 0; ac == 0 && apos < ckey1nlen; apos++) { ac = be16_to_cpu (p1[apos]); - ac = ac ? fsw_to_lower (ac) : 0xFFFF; + ac = fsw_to_lower (ac); } /* get next valid character from ckey2 */ for (bc = 0; bc == 0 && bpos < ckey2nlen; bpos++) { bc = p2[bpos]; - bc = bc ? fsw_to_lower (bc) : 0xFFFF; + bc = fsw_to_lower (bc); } if (ac != bc) break; - if (bpos == ckey1nlen) + if (ac == 0) return 0; }