summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeremy Allison <jra@samba.org>1998-05-26 19:37:31 +0000
committerJeremy Allison <jra@samba.org>1998-05-26 19:37:31 +0000
commit1d16f750515bcf49e0dc87394479dc56e7192538 (patch)
tree43dc3e4498e941ffa44bec5801dc9b14643c91ff
parent863c787b020eaf2dc648f51087f5ce3d2c82ab2c (diff)
downloadsamba-1d16f750515bcf49e0dc87394479dc56e7192538.tar.gz
samba-1d16f750515bcf49e0dc87394479dc56e7192538.tar.bz2
samba-1d16f750515bcf49e0dc87394479dc56e7192538.zip
smb.h: More NT SMB stuff (just defines).
smbpass.c: Do *NOT* make this function static. It breaks the compile on gcc util.c: Getting closer to MS wildcard semantics. A trailing '*' matches any trailing dot-separated components. trans2.c: Removed hacks that change multiple '?' -> '*' as this breaks things now. trans2.h: Removed NT_FILE_ATTRIBUTE_NORMAL - now FILE_ATTRIBUTE_NORMAL is defined in smb.h. Jeremy. (This used to be commit 42a65511068cd9006350c80bbed2f346f3f01cb0)
-rw-r--r--source3/include/smb.h9
-rw-r--r--source3/include/trans2.h5
-rw-r--r--source3/lib/util.c8
-rw-r--r--source3/passdb/smbpass.c3
-rw-r--r--source3/smbd/trans2.c12
5 files changed, 28 insertions, 9 deletions
diff --git a/source3/include/smb.h b/source3/include/smb.h
index 31935b636d..0382cf2c71 100644
--- a/source3/include/smb.h
+++ b/source3/include/smb.h
@@ -1037,6 +1037,15 @@ struct parm_struct
/* DesiredAccess */
#if 0
/* TODO.... JRA */
+#define SPECIFIC_RIGHTS_MASK 0x00FFFFL
+#define STANDARD_RIGHTS_MASK 0xFF0000L
+#define DELETE_ACCESS (1L<<16)
+#define READ_CONTROL_ACCESS (1L<<17)
+#define WRITE_DAC_ACCESS (1L<<18)
+#define WRITE_OWNER_ACCESS (1L<<19)
+#define SYNCHRONIZE_ACCESS (1L<<20)
+#define SYSTEM_SECURITY_ACCESS (1L<<24)
+
#define GENERIC_READ xxx?
#define GENERIC_WRITE xxx?
#endif
diff --git a/source3/include/trans2.h b/source3/include/trans2.h
index 62b6a1a9bf..894823602e 100644
--- a/source3/include/trans2.h
+++ b/source3/include/trans2.h
@@ -233,11 +233,6 @@ Byte offset Type name description
#define DIRLEN_GUESS (45+MAX(l1_achName,l2_achName))
-/* NT uses a FILE_ATTRIBUTE_NORMAL when no other attributes
- are set. */
-
-#define NT_FILE_ATTRIBUTE_NORMAL 0x80
-
#endif
diff --git a/source3/lib/util.c b/source3/lib/util.c
index ebf66c56f4..98cd150d7f 100644
--- a/source3/lib/util.c
+++ b/source3/lib/util.c
@@ -3103,6 +3103,7 @@ BOOL mask_match(char *str, char *regexp, int case_sig,BOOL trans2)
* characters.
*/
char *fp, *rp, *cp2, *cp1;
+ BOOL last_wcard_was_star = False;
matched = False;
for( cp1 = ebase, cp2 = sbase; cp1;) {
fp = strchr(cp2, '.');
@@ -3111,12 +3112,17 @@ BOOL mask_match(char *str, char *regexp, int case_sig,BOOL trans2)
rp = strchr(cp1, '.');
if(rp)
*rp = '\0';
+
+ if(cp1[strlen(cp1)-1] == '*')
+ last_wcard_was_star = True;
+ else
+ last_wcard_was_star = False;
if(!do_match(cp2, cp1, case_sig))
break;
cp2 = fp ? fp + 1 : "";
cp1 = rp ? rp + 1 : NULL;
}
- if(cp1 == NULL)
+ if(cp1 == NULL && ((*cp2 == '\0') || last_wcard_was_star))
matched = True;
} else {
matched = do_match(sbase,ebase,case_sig) && do_match(sext,eext,case_sig);
diff --git a/source3/passdb/smbpass.c b/source3/passdb/smbpass.c
index a9efcf2a52..abb037b95d 100644
--- a/source3/passdb/smbpass.c
+++ b/source3/passdb/smbpass.c
@@ -952,5 +952,6 @@ struct passdb_ops *file_initialize_password_db(void)
}
#else
- static void dummy_function(void) { } /* stop some compilers complaining */
+ /* Do *NOT* make this function static. It breaks the compile on gcc. JRA */
+ void dummy_function(void) { } /* stop some compilers complaining */
#endif /* USE_SMBPASS_DB */
diff --git a/source3/smbd/trans2.c b/source3/smbd/trans2.c
index 4c06377bda..4fefb4b39c 100644
--- a/source3/smbd/trans2.c
+++ b/source3/smbd/trans2.c
@@ -401,7 +401,7 @@ static int get_lanman2_dir_entry(int cnum,char *path_mask,int dirtype,int info_l
p = pdata;
nameptr = p;
- nt_extmode = mode ? mode : NT_FILE_ATTRIBUTE_NORMAL;
+ nt_extmode = mode ? mode : FILE_ATTRIBUTE_NORMAL;
switch (info_level)
{
@@ -693,13 +693,21 @@ static int call_trans2findfirst(char *inbuf, char *outbuf, int bufsize, int cnum
p++;
}
}
-
+
+#if 0 /* JRA */
+ /*
+ * Now we have a working mask_match in util.c, I believe
+ * we no longer need these hacks (in fact they break
+ * things). JRA.
+ */
+
/* a special case for 16 bit apps */
if (strequal(mask,"????????.???")) pstrcpy(mask,"*");
/* handle broken clients that send us old 8.3 format */
string_sub(mask,"????????","*");
string_sub(mask,".???",".*");
+#endif /* JRA */
/* Save the wildcard match and attribs we are using on this directory -
needed as lanman2 assumes these are being saved between calls */