]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
libcephfs_proxy: fix passed buffers for fscrypt functions
authorXavi Hernandez <xhernandez@gmail.com>
Thu, 9 Apr 2026 09:52:39 +0000 (11:52 +0200)
committerXavi Hernandez <xhernandez@gmail.com>
Thu, 9 Apr 2026 10:10:08 +0000 (12:10 +0200)
The macro CEPH_BUFF_ADD() doesn't set the size of the buffer in the
appropriate request field. We need to use CEPH_DATA_ADD() to do so.

Fixes: https://tracker.ceph.com/issues/75933
Signed-off-by: Xavi Hernandez <xhernandez@gmail.com>
src/libcephfs_proxy/libcephfs_proxy.c

index e2ad7890fa9d202b47f6c6a6711629f9c584929e..771d10b7ce05561086f80d8c3cdeeb22b425d76b 100644 (file)
@@ -1197,7 +1197,7 @@ __public int32_t ceph_add_fscrypt_key(struct ceph_mount_info *cmount,
        req.user = user;
        req.kid = FSCRYPT_KEY_IDENTIFIER_SIZE;
 
-       CEPH_BUFF_ADD(req, key_data, key_len);
+       CEPH_DATA_ADD(req, key, key_data, key_len);
 
        CEPH_BUFF_ADD(ans, kid, FSCRYPT_KEY_IDENTIFIER_SIZE);
 
@@ -1211,9 +1211,8 @@ __public int32_t ceph_remove_fscrypt_key(struct ceph_mount_info *cmount,
        CEPH_REQ(ceph_remove_fscrypt_key, req, 1, ans, 1);
 
        req.user = user;
-       req.arg = sizeof(struct fscrypt_remove_key_arg);
 
-       CEPH_BUFF_ADD(req, arg, sizeof(struct fscrypt_remove_key_arg));
+       CEPH_DATA_ADD(req, arg, arg, sizeof(struct fscrypt_remove_key_arg));
 
        CEPH_BUFF_ADD(ans, arg, sizeof(struct fscrypt_remove_key_arg));
 
@@ -1225,9 +1224,7 @@ __public int32_t ceph_get_fscrypt_key_status(
 {
        CEPH_REQ(ceph_get_fscrypt_key_status, req, 1, ans, 1);
 
-       req.arg = sizeof(struct fscrypt_get_key_status_arg);
-
-       CEPH_BUFF_ADD(req, arg, sizeof(struct fscrypt_get_key_status_arg));
+       CEPH_DATA_ADD(req, arg, arg, sizeof(struct fscrypt_get_key_status_arg));
 
        CEPH_BUFF_ADD(ans, arg, sizeof(struct fscrypt_get_key_status_arg));
 
@@ -1241,9 +1238,8 @@ __public int32_t ceph_ll_set_fscrypt_policy_v2(
        CEPH_REQ(ceph_ll_set_fscrypt_policy_v2, req, 1, ans, 0);
 
        req.inode = ptr_value(in);
-       req.policy = sizeof(struct fscrypt_policy_v2);
 
-       CEPH_BUFF_ADD(req, policy, sizeof(struct fscrypt_policy_v2));
+       CEPH_DATA_ADD(req, policy, policy, sizeof(struct fscrypt_policy_v2));
 
        return CEPH_PROCESS(cmount, LIBCEPHFSD_OP_LL_SET_FSCRYPT_POLICY_V2, req,
                            ans);