s3: include smbd/smbd.h where needed.
[amitay/samba.git] / source3 / smbd / share_access.c
index f5f79c86e571177d358cf3d02f06b2aacc7b72b4..de56fc784ee439dc962b6ceb4332359120e385a1 100644 (file)
 */
 
 #include "includes.h"
+#include "smbd/smbd.h"
+#include "smbd/globals.h"
+#include "../libcli/security/security.h"
+#include "passdb/lookup_sid.h"
 
 /*
  * No prefix means direct username
@@ -66,11 +70,11 @@ static bool token_contains_name(TALLOC_CTX *mem_ctx,
                                const char *username,
                                const char *domain,
                                const char *sharename,
-                               const struct nt_user_token *token,
+                               const struct security_token *token,
                                const char *name)
 {
        const char *prefix;
-       DOM_SID sid;
+       struct dom_sid sid;
        enum lsa_SidType type;
 
        if (username != NULL) {
@@ -128,8 +132,10 @@ static bool token_contains_name(TALLOC_CTX *mem_ctx,
                        continue;
                }
                if (*prefix == '&') {
-                       if (user_in_netgroup(username, name)) {
-                               return True;
+                       if (username) {
+                               if (user_in_netgroup(mem_ctx, username, name)) {
+                                       return True;
+                               }
                        }
                        continue;
                }
@@ -152,7 +158,7 @@ static bool token_contains_name(TALLOC_CTX *mem_ctx,
 bool token_contains_name_in_list(const char *username,
                                 const char *domain,
                                 const char *sharename,
-                                const struct nt_user_token *token,
+                                const struct security_token *token,
                                 const char **list)
 {
        TALLOC_CTX *mem_ctx;
@@ -192,7 +198,7 @@ bool token_contains_name_in_list(const char *username,
  */
 
 bool user_ok_token(const char *username, const char *domain,
-                  struct nt_user_token *token, int snum)
+                  const struct security_token *token, int snum)
 {
        if (lp_invalid_users(snum) != NULL) {
                if (token_contains_name_in_list(username, domain,
@@ -252,9 +258,11 @@ bool user_ok_token(const char *username, const char *domain,
 
 bool is_share_read_only_for_token(const char *username,
                                  const char *domain,
-                                 struct nt_user_token *token, int snum)
+                                 const struct security_token *token,
+                                 connection_struct *conn)
 {
-       bool result = lp_readonly(snum);
+       int snum = SNUM(conn);
+       bool result = conn->read_only;
 
        if (lp_readlist(snum) != NULL) {
                if (token_contains_name_in_list(username, domain,