return 0;
}
-static NTSTATUS fsp_smb_fname_link(struct files_struct *fsp,
- struct fsp_smb_fname_link **smb_fname_link,
- struct files_struct **smb_fname_fsp)
+static bool fsp_smb_fname_link(struct files_struct *fsp,
+ struct fsp_smb_fname_link **smb_fname_link,
+ struct files_struct **smb_fname_fsp)
{
struct fsp_smb_fname_link *link = NULL;
link = talloc_zero(fsp, struct fsp_smb_fname_link);
if (link == NULL) {
- return NT_STATUS_NO_MEMORY;
+ return false;
}
link->smb_fname_link = smb_fname_link;
*smb_fname_fsp = fsp;
talloc_set_destructor(link, fsp_smb_fname_link_destructor);
- return NT_STATUS_OK;
+ return true;
}
/*
{
struct files_struct *fsp = NULL;
NTSTATUS status;
+ bool ok;
DBG_DEBUG("smb_fname [%s]\n", smb_fname_str_dbg(smb_fname));
fsp->file_id = vfs_file_id_from_sbuf(conn, &fsp->fsp_name->st);
- status = fsp_smb_fname_link(fsp,
- &smb_fname->fsp_link,
- &smb_fname->fsp);
- if (!NT_STATUS_IS_OK(status)) {
- goto fail;
+ ok = fsp_smb_fname_link(fsp, &smb_fname->fsp_link, &smb_fname->fsp);
+ if (!ok) {
+ goto nomem;
}
DBG_DEBUG("fsp [%s]: OK\n", fsp_str_dbg(fsp));
talloc_set_destructor(smb_fname, smb_fname_fsp_destructor);
return NT_STATUS_OK;
+nomem:
+ status = NT_STATUS_NO_MEMORY;
fail:
DBG_DEBUG("Opening pathref for [%s] failed: %s\n",
smb_fname_str_dbg(smb_fname),
struct vfs_open_how how = { .flags = O_RDONLY|O_NONBLOCK, };
NTSTATUS status;
int fd;
+ bool ok;
SMB_ASSERT(smb_fname->fsp == NULL);
SMB_ASSERT(is_named_stream(smb_fname));
fsp->fsp_flags.is_directory = S_ISDIR(fsp->fsp_name->st.st_ex_mode);
fsp->file_id = vfs_file_id_from_sbuf(conn, &fsp->fsp_name->st);
- status = fsp_smb_fname_link(fsp, &smb_fname->fsp_link, &smb_fname->fsp);
- if (!NT_STATUS_IS_OK(status)) {
- goto fail;
+ ok = fsp_smb_fname_link(fsp, &smb_fname->fsp_link, &smb_fname->fsp);
+ if (!ok) {
+ goto nomem;
}
DBG_DEBUG("fsp [%s]: OK\n", fsp_str_dbg(fsp));
talloc_set_destructor(smb_fname, smb_fname_fsp_destructor);
return NT_STATUS_OK;
+nomem:
+ status = NT_STATUS_NO_MEMORY;
fail:
TALLOC_FREE(full_fname);
if (fsp != NULL) {
goto nomem;
}
- status = fsp_smb_fname_link(fsp,
- &result->fsp_link,
- &result->fsp);
- if (!NT_STATUS_IS_OK(status)) {
- goto fail;
+ ok = fsp_smb_fname_link(fsp, &result->fsp_link, &result->fsp);
+ if (!ok) {
+ goto nomem;
}
talloc_set_destructor(result, smb_fname_fsp_destructor);
};
NTSTATUS status;
int ret, fd;
+ bool ok;
/*
* Make sure we don't need of the all the magic in
smb_fname_rel->st = fsp->fsp_name->st;
- status = fsp_smb_fname_link(fsp,
- &smb_fname_rel->fsp_link,
- &smb_fname_rel->fsp);
- if (!NT_STATUS_IS_OK(status)) {
- DBG_DEBUG("fsp_smb_fname_link() failed: %s\n",
- nt_errstr(status));
+ ok = fsp_smb_fname_link(fsp,
+ &smb_fname_rel->fsp_link,
+ &smb_fname_rel->fsp);
+ if (!ok) {
+ DBG_DEBUG("fsp_smb_fname_link() failed\n");
fd_close(fsp);
file_free(NULL, fsp);
- return status;
+ return NT_STATUS_NO_MEMORY;
}
DBG_DEBUG("fsp [%s]: OK, fd=%d\n", fsp_str_dbg(fsp), fd);
struct smb_filename *dot = NULL;
NTSTATUS status;
int fd;
+ bool ok;
#ifdef O_DIRECTORY
how.flags |= O_DIRECTORY;
dot->st = fsp->fsp_name->st;
- status = fsp_smb_fname_link(fsp,
- &dot->fsp_link,
- &dot->fsp);
- if (!NT_STATUS_IS_OK(status)) {
- DBG_DEBUG("fsp_smb_fname_link() failed: %s\n",
- nt_errstr(status));
+ ok = fsp_smb_fname_link(fsp, &dot->fsp_link, &dot->fsp);
+ if (!ok) {
+ DBG_DEBUG("fsp_smb_fname_link() failed\n");
fd_close(fsp);
file_free(NULL, fsp);
- return status;
+ return NT_STATUS_NO_MEMORY;
}
DBG_DEBUG("fsp [%s]: OK, fd=%d\n", fsp_str_dbg(fsp), fd);
NTSTATUS move_smb_fname_fsp_link(struct smb_filename *smb_fname_dst,
struct smb_filename *smb_fname_src)
{
- NTSTATUS status;
+ bool ok;
/*
* The target should always not be linked yet!
return NT_STATUS_OK;
}
- status = fsp_smb_fname_link(smb_fname_src->fsp,
- &smb_fname_dst->fsp_link,
- &smb_fname_dst->fsp);
- if (!NT_STATUS_IS_OK(status)) {
- return status;
+ ok = fsp_smb_fname_link(smb_fname_src->fsp,
+ &smb_fname_dst->fsp_link,
+ &smb_fname_dst->fsp);
+ if (!ok) {
+ return NT_STATUS_NO_MEMORY;
}
talloc_set_destructor(smb_fname_dst, smb_fname_fsp_destructor);
NTSTATUS reference_smb_fname_fsp_link(struct smb_filename *smb_fname_dst,
const struct smb_filename *smb_fname_src)
{
- NTSTATUS status;
+ bool ok;
/*
* The target should always not be linked yet!
return NT_STATUS_OK;
}
- status = fsp_smb_fname_link(smb_fname_src->fsp,
- &smb_fname_dst->fsp_link,
- &smb_fname_dst->fsp);
- if (!NT_STATUS_IS_OK(status)) {
- return status;
+ ok = fsp_smb_fname_link(smb_fname_src->fsp,
+ &smb_fname_dst->fsp_link,
+ &smb_fname_dst->fsp);
+ if (!ok) {
+ return NT_STATUS_NO_MEMORY;
}
talloc_set_destructor(smb_fname_dst, fsp_ref_no_close_destructor);
struct smb_filename *smb_fname_new = talloc_move(fsp, _smb_fname);
const char *name_str = NULL;
uint32_t name_hash = 0;
- NTSTATUS status;
bool ok;
name_str = smb_fname_str_dbg(smb_fname_new);
return NT_STATUS_NO_MEMORY;
}
- status = fsp_smb_fname_link(fsp,
- &smb_fname_new->fsp_link,
- &smb_fname_new->fsp);
- if (!NT_STATUS_IS_OK(status)) {
- return status;
+ ok = fsp_smb_fname_link(fsp,
+ &smb_fname_new->fsp_link,
+ &smb_fname_new->fsp);
+ if (!ok) {
+ return NT_STATUS_NO_MEMORY;
}
fsp->name_hash = name_hash;