From bcf26d93d4c5eac7925ae4dec4321c85d0833ba0 Mon Sep 17 00:00:00 2001 From: Christopher Hoffman Date: Mon, 4 Mar 2024 19:43:58 +0000 Subject: [PATCH] client: Ensure symlink plaintext is set When creating symlink, ensure symlink_plain is set in fscrypt and non-fscrypt cases. Fixes: https://tracker.ceph.com/issues/64691 Signed-off-by: Christopher Hoffman --- src/client/Client.cc | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/client/Client.cc b/src/client/Client.cc index 1475f6f19c8..f1117d8c69d 100644 --- a/src/client/Client.cc +++ b/src/client/Client.cc @@ -1787,13 +1787,17 @@ Inode* Client::insert_trace(MetaRequest *request, MetaSession *session) request->perms); auto fscrypt_denc = fscrypt->get_fname_denc(in->fscrypt_ctx, &in->fscrypt_key_validator, true); - if (fscrypt_denc && in->is_symlink()) { - string slname; - int ret = fscrypt_denc->get_decrypted_symlink(in->symlink, &slname); - if (ret < 0) { - ldout(cct, 0) << __FILE__ << ":" << __LINE__ << ": failed to decrypt symlink (r=" << ret << ")" << dendl; + if (in->is_symlink()) { + if (fscrypt_denc) { + string slname; + int ret = fscrypt_denc->get_decrypted_symlink(in->symlink, &slname); + if (ret < 0) { + ldout(cct, 0) << __FILE__ << ":" << __LINE__ << ": failed to decrypt symlink (r=" << ret << ")" << dendl; + } + in->symlink_plain = slname; + } else { + in->symlink_plain = in->symlink; } - in->symlink_plain = slname; } } -- 2.39.5