lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Tue, 17 Nov 2020 22:22:28 -0800 From: Daniel Rosenberg <drosen@...gle.com> To: Eric Biggers <ebiggers@...nel.org> Cc: "Theodore Y . Ts'o" <tytso@....edu>, Jaegeuk Kim <jaegeuk@...nel.org>, Andreas Dilger <adilger.kernel@...ger.ca>, Chao Yu <chao@...nel.org>, Alexander Viro <viro@...iv.linux.org.uk>, Richard Weinberger <richard@....at>, linux-fscrypt@...r.kernel.org, linux-ext4@...r.kernel.org, linux-f2fs-devel@...ts.sourceforge.net, linux-kernel@...r.kernel.org, linux-fsdevel@...r.kernel.org, linux-mtd@...ts.infradead.org, Gabriel Krisman Bertazi <krisman@...labora.com>, kernel-team@...roid.com Subject: Re: [PATCH v2 3/3] f2fs: Handle casefolding with Encryption On Tue, Nov 17, 2020 at 10:50 AM Eric Biggers <ebiggers@...nel.org> wrote: > > > What is the assignment to dentry_page supposed to be accomplishing? It looks > like it's meant to pass up errors from f2fs_find_target_dentry(), but it doesn't > do that. Woops. Fixed that for the next version. > > > @@ -222,14 +250,20 @@ static bool f2fs_match_ci_name(const struct inode *dir, const struct qstr *name, > > * fall back to treating them as opaque byte sequences. > > */ > > if (sb_has_strict_encoding(sb) || name->len != entry.len) > > - return false; > > - return !memcmp(name->name, entry.name, name->len); > > + res = 0; > > + else > > + res = memcmp(name->name, entry.name, name->len) == 0; > > + } else { > > + /* utf8_strncasecmp_folded returns 0 on match */ > > + res = (res == 0); > > } > > The following might be easier to understand: > > /* > * In strict mode, ignore invalid names. In non-strict mode, fall back > * to treating them as opaque byte sequences. > */ > if (res < 0 && !sb_has_strict_encoding(sb)) { > res = name->len == entry.len && > memcmp(name->name, entry.name, name->len) == 0; > } else { > /* utf8_strncasecmp_folded returns 0 on match */ > res = (res == 0); > } > Thanks, that is a fair bit nicer. > > @@ -273,10 +308,14 @@ struct f2fs_dir_entry *f2fs_find_target_dentry(const struct f2fs_dentry_ptr *d, > > continue; > > } > > > > - if (de->hash_code == fname->hash && > > - f2fs_match_name(d->inode, fname, d->filename[bit_pos], > > - le16_to_cpu(de->name_len))) > > - goto found; > > + if (de->hash_code == fname->hash) { > > + res = f2fs_match_name(d->inode, fname, d->filename[bit_pos], > > + le16_to_cpu(de->name_len)); > > + if (res < 0) > > + return ERR_PTR(res); > > + else if (res) > > + goto found; > > + } > > Overly long line here. Also 'else if' is unnecessary, just use 'if'. > > - Eric The 0 case is important, since that reflects that the name was not found. -Daniel
Powered by blists - more mailing lists