In copy_internals(), if the !CAN_WRITE(conn) kicks in, we end up
dereferencing a NULL smb_filename.
This adds a simple protection around it.
Tim, please check!
Volker
const char *fname,
SMB_STRUCT_STAT *psbuf,
struct smb_filename **smb_fname_out);
-char *smb_fname_str_dbg(const struct smb_filename *smb_fname);
+const char *smb_fname_str_dbg(const struct smb_filename *smb_fname);
NTSTATUS copy_smb_filename(TALLOC_CTX *ctx,
const struct smb_filename *smb_fname_in,
struct smb_filename **smb_fname_out);
/**
* Return a string using the debug_ctx()
*/
-char *smb_fname_str_dbg(const struct smb_filename *smb_fname)
+const char *smb_fname_str_dbg(const struct smb_filename *smb_fname)
{
char *fname = NULL;
NTSTATUS status;
+ if (smb_fname == NULL) {
+ return "";
+ }
status = get_full_smb_filename(debug_ctx(), smb_fname, &fname);
if (!NT_STATUS_IS_OK(status)) {
- fname = talloc_strdup(debug_ctx(), "");
+ return "";
}
return fname;
}