s3:smb2_server: add .as_root to smbd_smb2_dispatch_table
authorStefan Metzmacher <metze@samba.org>
Mon, 6 Aug 2012 08:04:48 +0000 (10:04 +0200)
committerStefan Metzmacher <metze@samba.org>
Tue, 7 Aug 2012 09:16:36 +0000 (11:16 +0200)
metze

source3/smbd/smb2_server.c

index 6156370c2506ed5b294758550a68e56da376f0c1..5fcf03c51c2849970b47b1ce14b08a8e646abe64 100644 (file)
@@ -37,22 +37,35 @@ static const struct smbd_smb2_dispatch_table {
        const char *name;
        bool need_session;
        bool need_tcon;
+       bool as_root;
 } smbd_smb2_table[] = {
 #define _OP(o) .opcode = o, .name = #o
        {
                _OP(SMB2_OP_NEGPROT),
+               .as_root = true,
        },{
                _OP(SMB2_OP_SESSSETUP),
+               .as_root = true,
        },{
                _OP(SMB2_OP_LOGOFF),
                .need_session = true,
+               .as_root = true,
        },{
                _OP(SMB2_OP_TCON),
                .need_session = true,
+               /*
+                * This call needs to be run as root.
+                *
+                * smbd_smb2_request_process_tcon()
+                * calls make_connection_snum(), which will call
+                * change_to_user(), when needed.
+                */
+               .as_root = true,
        },{
                _OP(SMB2_OP_TDIS),
                .need_session = true,
                .need_tcon = true,
+               .as_root = true,
        },{
                _OP(SMB2_OP_CREATE),
                .need_session = true,
@@ -83,8 +96,10 @@ static const struct smbd_smb2_dispatch_table {
                .need_tcon = true,
        },{
                _OP(SMB2_OP_CANCEL),
+               .as_root = true,
        },{
                _OP(SMB2_OP_KEEPALIVE),
+               .as_root = true,
        },{
                _OP(SMB2_OP_FIND),
                .need_session = true,