1
0
mirror of https://github.com/samba-team/samba.git synced 2025-01-26 10:04:02 +03:00

s3:torture/vfstest implement sys_acl_blob_get_fd

Signed-off-by: Christian Ambach <ambi@samba.org>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
This commit is contained in:
Christian Ambach 2012-11-15 15:25:52 +01:00 committed by Andrew Bartlett
parent de676555ab
commit 8e571fd385

View File

@ -1642,6 +1642,49 @@ static NTSTATUS cmd_sys_acl_blob_get_file(struct vfs_state *vfs,
return NT_STATUS_OK;
}
static NTSTATUS cmd_sys_acl_blob_get_fd(struct vfs_state *vfs,
TALLOC_CTX *mem_ctx,
int argc, const char **argv)
{
int fd;
char *description;
DATA_BLOB blob;
int ret;
size_t i;
if (argc != 2) {
printf("Usage: sys_acl_blob_get_fd <fd>\n");
return NT_STATUS_OK;
}
fd = atoi(argv[1]);
if (fd < 0 || fd >= 1024) {
printf("sys_acl_blob_get_fd: error=%d "
"(file descriptor out of range)\n", EBADF);
return NT_STATUS_OK;
}
if (vfs->files[fd] == NULL) {
printf("sys_acl_blob_get_fd: error=%d "
"(invalid file descriptor)\n", EBADF);
return NT_STATUS_OK;
}
ret = SMB_VFS_SYS_ACL_BLOB_GET_FD(vfs->files[fd], talloc_tos(),
&description, &blob);
if (ret != 0) {
printf("sys_acl_blob_get_fd failed (%s)\n", strerror(errno));
return map_nt_error_from_unix(errno);
}
printf("Description: %s\n", description);
for (i = 0; i < blob.length; i++) {
printf("%.2x ", blob.data[i]);
}
printf("\n");
return NT_STATUS_OK;
}
static NTSTATUS cmd_sys_acl_delete_def_file(struct vfs_state *vfs, TALLOC_CTX *mem_ctx,
int argc, const char **argv)
@ -1723,6 +1766,8 @@ struct cmd_set vfs_commands[] = {
{ "sys_acl_get_fd", cmd_sys_acl_get_fd, "VFS sys_acl_get_fd()", "sys_acl_get_fd <fd>" },
{ "sys_acl_blob_get_file", cmd_sys_acl_blob_get_file,
"VFS sys_acl_blob_get_file()", "sys_acl_blob_get_file <path>" },
{ "sys_acl_blob_get_fd", cmd_sys_acl_blob_get_fd,
"VFS sys_acl_blob_get_fd()", "sys_acl_blob_get_fd <path>" },
{ "sys_acl_delete_def_file", cmd_sys_acl_delete_def_file, "VFS sys_acl_delete_def_file()", "sys_acl_delete_def_file <path>" },