smbd:smb2: add SMB2_HDR_FLAG_REPLAY_OPERATION to the allowed flags
authorMichael Adam <obnox@samba.org>
Fri, 24 Jan 2014 09:01:47 +0000 (10:01 +0100)
committerMichael Adam <obnox@samba.org>
Fri, 9 May 2014 10:58:22 +0000 (12:58 +0200)
for some calls: create, read, write, ioct and set_info

source3/smbd/smb2_server.c

index 4a7abcbeacb95a784883f28f7f6ed61b56f0b7ba..d637ac1ff069b78f3b601d2111eb204ee90ac95b 100644 (file)
@@ -2010,9 +2010,22 @@ NTSTATUS smbd_smb2_request_dispatch(struct smbd_smb2_request *req)
        allowed_flags = SMB2_HDR_FLAG_CHAINED |
                        SMB2_HDR_FLAG_SIGNED |
                        SMB2_HDR_FLAG_DFS;
-       if (opcode == SMB2_OP_CANCEL) {
+       switch (opcode) {
+       case SMB2_OP_CANCEL:
                allowed_flags |= SMB2_HDR_FLAG_ASYNC;
+               break;
+       case SMB2_OP_CREATE:
+       case SMB2_OP_READ:
+       case SMB2_OP_WRITE:
+       case SMB2_OP_SETINFO:
+       case SMB2_OP_IOCTL:
+               /* TODO: any other? or valid for all? */
+               allowed_flags |= SMB2_HDR_FLAG_REPLAY_OPERATION;
+               break;
+       default:
+               break;
        }
+
        if ((flags & ~allowed_flags) != 0) {
                return smbd_smb2_request_error(req, NT_STATUS_INVALID_PARAMETER);
        }