summaryrefslogtreecommitdiff
path: root/source3/smbd
diff options
context:
space:
mode:
authorJeremy Allison <jra@samba.org>2001-02-16 00:24:43 +0000
committerJeremy Allison <jra@samba.org>2001-02-16 00:24:43 +0000
commit62dc55a43295e9e3abd9da13148b322b3aa89917 (patch)
treeb8d50b8d786eea9c0accdd8b3d1d07709bf84d95 /source3/smbd
parentddfac242e3c6b16b93a6fabf73f837cd5ffe216a (diff)
downloadsamba-62dc55a43295e9e3abd9da13148b322b3aa89917.tar.gz
samba-62dc55a43295e9e3abd9da13148b322b3aa89917.tar.bz2
samba-62dc55a43295e9e3abd9da13148b322b3aa89917.zip
configure configure.in smbd/posix_acls.c smbd/dosmode.c: Fix for zero permission W2K profiles.
libsmb/cliconnect.c rpc_client/cli_login.c smbd/reply.c: codepage fixes from Tim. Jeremy. (This used to be commit 3ded1e6bd5f79948e437ce5b1799705945f36ad2)
Diffstat (limited to 'source3/smbd')
-rw-r--r--source3/smbd/dosmode.c2
-rw-r--r--source3/smbd/posix_acls.c17
-rw-r--r--source3/smbd/reply.c5
3 files changed, 18 insertions, 6 deletions
diff --git a/source3/smbd/dosmode.c b/source3/smbd/dosmode.c
index 31c4fbdf31..a4b4f65ad9 100644
--- a/source3/smbd/dosmode.c
+++ b/source3/smbd/dosmode.c
@@ -111,6 +111,8 @@ mode_t unix_mode(connection_struct *conn,int dosmode,const char *fname)
result |= lp_force_create_mode(SNUM(conn));
}
}
+
+ DEBUG(3,("unix_mode(%s) returning 0%o\n",fname,(int)result ));
return(result);
}
diff --git a/source3/smbd/posix_acls.c b/source3/smbd/posix_acls.c
index db2f933420..da457604bb 100644
--- a/source3/smbd/posix_acls.c
+++ b/source3/smbd/posix_acls.c
@@ -391,14 +391,16 @@ static BOOL unpack_canon_ace(files_struct *fsp,
canon_ace **ppfile_ace, canon_ace **ppdir_ace,
uint32 security_info_sent, SEC_DESC *psd)
{
+#if !defined(HAVE_NO_ACLS)
extern DOM_SID global_sid_World;
- SEC_ACL *dacl = psd->dacl;
BOOL all_aces_are_inherit_only = (fsp->is_directory ? True : False);
canon_ace *file_ace = NULL;
canon_ace *dir_ace = NULL;
canon_ace *current_ace = NULL;
enum SID_NAME_USE sid_type;
int i;
+#endif /* HAVE_NO_ACLS */
+ SEC_ACL *dacl = psd->dacl;
*ppfile_ace = NULL;
*ppdir_ace = NULL;
@@ -415,6 +417,13 @@ static BOOL unpack_canon_ace(files_struct *fsp,
if(!(security_info_sent & DACL_SECURITY_INFORMATION) || !dacl)
return True;
+#if defined(HAVE_NO_ACLS)
+
+ /* No point in doing this if we have no ACL support. */
+ return False;
+
+#else /* HAVE_NO_ACLS */
+
/*
* Now go through the DACL and create the canon_ace lists.
*/
@@ -623,6 +632,8 @@ static BOOL unpack_canon_ace(files_struct *fsp,
*ppfile_ace = file_ace;
*ppdir_ace = dir_ace;
return True;
+
+#endif /* HAVE_NO_ACLS */
}
/****************************************************************************
@@ -704,7 +715,7 @@ static BOOL unpack_posix_permissions(files_struct *fsp, SMB_STRUCT_STAT *psbuf,
* ACLs on directories.
*/
- psa->flags &= ~(SEC_ACE_FLAG_OBJECT_INHERIT|SEC_ACE_FLAG_CONTAINER_INHERIT);
+ psa->flags &= ~(SEC_ACE_FLAG_OBJECT_INHERIT|SEC_ACE_FLAG_CONTAINER_INHERIT|SEC_ACE_FLAG_INHERITED_ACE);
if(psa->flags != 0) {
DEBUG(1,("unpack_posix_permissions: unable to set ACE flags (%x).\n",
@@ -1554,7 +1565,7 @@ BOOL set_nt_acl(files_struct *fsp, uint32 security_info_sent, SEC_DESC *psd)
* If we cannot set using POSIX ACLs we fall back to checking if we need to chmod.
*/
- if(!acl_set_support && (sbuf.st_mode != perms)) {
+ if(!acl_set_support && posix_perms && (sbuf.st_mode != perms)) {
free_canon_ace_list(file_ace_list);
free_canon_ace_list(dir_ace_list);
diff --git a/source3/smbd/reply.c b/source3/smbd/reply.c
index e1feb921f5..402f9db754 100644
--- a/source3/smbd/reply.c
+++ b/source3/smbd/reply.c
@@ -837,17 +837,16 @@ int reply_sesssetup_and_X(connection_struct *conn, char *inbuf,char *outbuf,int
fstrcpy(user,p);
p = skip_string(p,1);
/*
- * Incoming user is in DOS codepage format. Convert
+ * Incoming user and domain are in DOS codepage format. Convert
* to UNIX.
*/
dos_to_unix(user,True);
domain = p;
-
+ dos_to_unix(domain, True);
DEBUG(3,("Domain=[%s] NativeOS=[%s] NativeLanMan=[%s]\n",
domain,skip_string(p,1),skip_string(p,2)));
}
-
DEBUG(3,("sesssetupX:name=[%s]\n",user));
/* If name ends in $ then I think it's asking about whether a */