}
if (fsp->base_fsp != NULL) {
- status = fd_close(fsp->base_fsp);
+ struct files_struct *tmp_base_fsp = fsp->base_fsp;
+
+ fsp_set_base_fsp(fsp, NULL);
+
+ status = fd_close(tmp_base_fsp);
SMB_ASSERT(NT_STATUS_IS_OK(status));
- file_free(NULL, fsp->base_fsp);
- fsp->base_fsp = NULL;
+ file_free(NULL, tmp_base_fsp);
}
status = fd_close(fsp);
return NT_STATUS_OBJECT_NAME_NOT_FOUND;
}
- fsp->base_fsp = smb_fname_base->fsp;
+ fsp_set_base_fsp(fsp, smb_fname_base->fsp);
smb_fname_fsp_unlink(smb_fname_base);
TALLOC_FREE(smb_fname_base);
nt_errstr(status));
if (fsp->base_fsp != NULL) {
- fd_close(fsp->base_fsp);
- file_free(NULL, fsp->base_fsp);
- fsp->base_fsp = NULL;
+ struct files_struct *tmp_base_fsp = fsp->base_fsp;
+
+ fsp_set_base_fsp(fsp, NULL);
+
+ fd_close(tmp_base_fsp);
+ file_free(NULL, tmp_base_fsp);
}
file_free(NULL, fsp);
fsp = NULL;
return status;
}
if (fsp->base_fsp != NULL) {
- fd_close(fsp->base_fsp);
- file_free(NULL, fsp->base_fsp);
- fsp->base_fsp = NULL;
+ struct files_struct *tmp_base_fsp = fsp->base_fsp;
+
+ fsp_set_base_fsp(fsp, NULL);
+
+ fd_close(tmp_base_fsp);
+ file_free(NULL, tmp_base_fsp);
}
fd_close(fsp);
file_free(NULL, fsp);
}
if (fsp->base_fsp != NULL) {
- fd_close(fsp->base_fsp);
- file_free(NULL, fsp->base_fsp);
- fsp->base_fsp = NULL;
+ struct files_struct *tmp_base_fsp = fsp->base_fsp;
+
+ fsp_set_base_fsp(fsp, NULL);
+
+ fd_close(tmp_base_fsp);
+ file_free(NULL, tmp_base_fsp);
}
}
* base_fsp we already opened. Set up the
* base_fsp pointer.
*/
- fsp->base_fsp = base_fsp;
+ fsp_set_base_fsp(fsp, base_fsp);
}
/*
* We have to reset the already set base_fsp
* in order to close it in the error cleanup
*/
- fsp->base_fsp = NULL;
+ fsp_set_base_fsp(fsp, NULL);
goto fail;
}