1
0
mirror of https://github.com/samba-team/samba.git synced 2024-12-23 17:34:34 +03:00

Fix an ancient uninitialized variable read

The callers of open_file_ntcreate expect *psbuf to be filled correctly
This commit is contained in:
Volker Lendecke 2008-12-30 22:49:01 +01:00
parent cb5db966e3
commit ce2ff557bd
4 changed files with 10 additions and 8 deletions

View File

@ -4896,7 +4896,8 @@ bool sysv_cache_reload(void);
NTSTATUS print_fsp_open(struct smb_request *req, connection_struct *conn,
const char *fname,
uint16_t current_vuid, files_struct *fsp);
uint16_t current_vuid, files_struct *fsp,
SMB_STRUCT_STAT *psbuf);
void print_fsp_end(files_struct *fsp, enum file_close_type close_type);
/* The following definitions come from printing/printing.c */

View File

@ -27,10 +27,10 @@ print_job_start().
NTSTATUS print_fsp_open(struct smb_request *req, connection_struct *conn,
const char *fname,
uint16_t current_vuid, files_struct *fsp)
uint16_t current_vuid, files_struct *fsp,
SMB_STRUCT_STAT *psbuf)
{
int jobid;
SMB_STRUCT_STAT sbuf;
fstring name;
NTSTATUS status;
@ -74,9 +74,9 @@ NTSTATUS print_fsp_open(struct smb_request *req, connection_struct *conn,
fsp->is_directory = False;
string_set(&fsp->fsp_name,print_job_fname(lp_const_servicename(SNUM(conn)),jobid));
fsp->wcp = NULL;
SMB_VFS_FSTAT(fsp, &sbuf);
fsp->mode = sbuf.st_mode;
fsp->file_id = vfs_file_id_from_sbuf(conn, &sbuf);
SMB_VFS_FSTAT(fsp, psbuf);
fsp->mode = psbuf->st_mode;
fsp->file_id = vfs_file_id_from_sbuf(conn, psbuf);
return NT_STATUS_OK;
}

View File

@ -1360,7 +1360,7 @@ static NTSTATUS open_file_ntcreate(connection_struct *conn,
DEBUG(10, ("open_file_ntcreate: printer open fname=%s\n", fname));
return print_fsp_open(req, conn, fname, req->vuid, fsp);
return print_fsp_open(req, conn, fname, req->vuid, fsp, psbuf);
}
if (!parent_dirname_talloc(talloc_tos(), fname, &parent_dir,

View File

@ -4594,6 +4594,7 @@ void reply_printopen(struct smb_request *req)
{
connection_struct *conn = req->conn;
files_struct *fsp;
SMB_STRUCT_STAT sbuf;
NTSTATUS status;
START_PROFILE(SMBsplopen);
@ -4618,7 +4619,7 @@ void reply_printopen(struct smb_request *req)
}
/* Open for exclusive use, write only. */
status = print_fsp_open(req, conn, NULL, req->vuid, fsp);
status = print_fsp_open(req, conn, NULL, req->vuid, fsp, &sbuf);
if (!NT_STATUS_IS_OK(status)) {
reply_nterror(req, status);