****************************************************************************/
NTSTATUS unlink_internals(connection_struct *conn, struct smb_request *req,
- uint32_t dirtype, struct smb_filename *smb_fname,
- bool has_wild)
+ uint32_t dirtype, struct smb_filename *smb_fname)
{
char *fname_dir = NULL;
char *fname_mask = NULL;
int count=0;
NTSTATUS status = NT_STATUS_OK;
struct smb_filename *smb_fname_dir = NULL;
+ bool has_wild = false;
TALLOC_CTX *ctx = talloc_tos();
/* Split up the directory from the filename/mask. */
goto out;
}
+ if (req != NULL && !req->posix_pathnames) {
+ /*
+ * Check the wildcard mask *before*
+ * unmangling. As mangling is done
+ * for names that can't be returned
+ * to Windows the unmangled name may
+ * contain Windows wildcard characters.
+ */
+ has_wild = ms_has_wild(fname_mask);
+ }
+
/*
* We should only check the mangled cache
* here if unix_convert failed. This means
DEBUG(3,("reply_unlink : %s\n", smb_fname_str_dbg(smb_fname)));
- status = unlink_internals(conn, req, dirtype, smb_fname,
- path_contains_wcard);
+ status = unlink_internals(conn, req, dirtype, smb_fname);
if (!NT_STATUS_IS_OK(status)) {
if (open_was_deferred(req->xconn, req->mid)) {
/* We have re-scheduled this call. */