_wrap_name() returns bool, but two encryption error paths did "return r"
with r < 0, which converts to true. Callers then treated the failure as
success and used the unencrypted name. Return false instead.
Fixes: https://tracker.ceph.com/issues/78246
Signed-off-by: Sun Yuechi <sunyuechi@iscas.ac.cn>
int r = fscrypt_denc->get_encrypted_fname(dname, &_enc_name, &_alt_name, false);
if (r < 0) {
ldout(cct, 0) << __FILE__ << ":" << __LINE__ << ": failed to encrypt filename" << dendl;
- return r;
+ return false;
}
dname = std::move(_enc_name);
if (alternate_name.empty()) {
int r = fscrypt_denc->get_encrypted_fname(alternate_name, &_enc_name, &_alt_name, true);
if (r < 0) {
ldout(cct, 0) << __FILE__ << ":" << __LINE__ << ": failed to encrypt filename" << dendl;
- return r;
+ return false;
}
alternate_name = std::move(_alt_name);
}