re-enable some tests
[kai/samba.git] / source4 / torture / smb2 / lock.c
index 1a56cb9caddd13bcc85512a42e7ed8b6bd5f38e5..4e21045a33027933a4fc16f99bb06d81f13969b7 100644 (file)
@@ -51,7 +51,7 @@ static bool test_valid_request(struct torture_context *torture, struct smb2_tree
        struct smb2_handle h;
        uint8_t buf[200];
        struct smb2_lock lck;
-       struct smb2_lock_element el[1];
+       struct smb2_lock_element el[2];
 
        ZERO_STRUCT(buf);
 
@@ -187,6 +187,102 @@ static bool test_valid_request(struct torture_context *torture, struct smb2_tree
        CHECK_STATUS(status, NT_STATUS_OK);
        status = smb2_lock(tree, &lck);
        CHECK_STATUS(status, NT_STATUS_OK);
+       status = smb2_lock(tree, &lck);
+       CHECK_STATUS(status, NT_STATUS_RANGE_NOT_LOCKED);
+
+       lck.in.lock_count       = 0x0001;
+       lck.in.reserved         = 0;
+       lck.in.file.handle      = h;
+       el[0].offset            = 1;
+       el[0].length            = 1;
+       el[0].reserved          = 0x00000000;
+       el[0].flags             = ~SMB2_LOCK_FLAG_ALL_MASK;
+
+       status = smb2_lock(tree, &lck);
+       CHECK_STATUS(status, NT_STATUS_OK);
+
+       el[0].flags             = SMB2_LOCK_FLAG_UNLOCK;
+       status = smb2_lock(tree, &lck);
+       CHECK_STATUS(status, NT_STATUS_OK);
+
+       el[0].flags             = SMB2_LOCK_FLAG_UNLOCK;
+       status = smb2_lock(tree, &lck);
+       CHECK_STATUS(status, NT_STATUS_RANGE_NOT_LOCKED);
+
+       el[0].flags             = SMB2_LOCK_FLAG_UNLOCK | SMB2_LOCK_FLAG_EXCLUSIVE;
+       status = smb2_lock(tree, &lck);
+       CHECK_STATUS(status, NT_STATUS_INVALID_PARAMETER);
+
+       el[0].flags             = SMB2_LOCK_FLAG_UNLOCK | SMB2_LOCK_FLAG_SHARED;
+       status = smb2_lock(tree, &lck);
+       CHECK_STATUS(status, NT_STATUS_INVALID_PARAMETER);
+
+       el[0].flags             = SMB2_LOCK_FLAG_UNLOCK | SMB2_LOCK_FLAG_FAIL_IMMEDIATELY;
+       status = smb2_lock(tree, &lck);
+       CHECK_STATUS(status, NT_STATUS_RANGE_NOT_LOCKED);
+
+       lck.in.lock_count       = 2;
+       lck.in.reserved         = 0;
+       lck.in.file.handle      = h;
+       el[0].offset            = 9999;
+       el[0].length            = 1;
+       el[0].reserved          = 0x00000000;
+       el[1].offset            = 9999;
+       el[1].length            = 1;
+       el[1].reserved          = 0x00000000;
+
+       lck.in.lock_count       = 2;
+       el[0].flags             = 0;
+       el[1].flags             = SMB2_LOCK_FLAG_UNLOCK;
+       status = smb2_lock(tree, &lck);
+       CHECK_STATUS(status, NT_STATUS_INVALID_PARAMETER);
+
+       lck.in.lock_count       = 2;
+       el[0].flags             = 0;
+       el[1].flags             = 0;
+       status = smb2_lock(tree, &lck);
+       CHECK_STATUS(status, NT_STATUS_OK);
+
+       lck.in.lock_count       = 2;
+       el[0].flags             = SMB2_LOCK_FLAG_UNLOCK;
+       el[1].flags             = 0;
+       status = smb2_lock(tree, &lck);
+       CHECK_STATUS(status, NT_STATUS_OK);
+
+       lck.in.lock_count       = 1;
+       el[0].flags             = SMB2_LOCK_FLAG_UNLOCK;
+       status = smb2_lock(tree, &lck);
+       CHECK_STATUS(status, NT_STATUS_OK);
+
+       lck.in.lock_count       = 1;
+       el[0].flags             = SMB2_LOCK_FLAG_UNLOCK;
+       status = smb2_lock(tree, &lck);
+       CHECK_STATUS(status, NT_STATUS_OK);
+
+       lck.in.lock_count       = 1;
+       el[0].flags             = SMB2_LOCK_FLAG_UNLOCK;
+       status = smb2_lock(tree, &lck);
+       CHECK_STATUS(status, NT_STATUS_RANGE_NOT_LOCKED);
+
+       lck.in.lock_count       = 1;
+       el[0].flags             = 0;
+       status = smb2_lock(tree, &lck);
+       CHECK_STATUS(status, NT_STATUS_OK);
+
+       status = smb2_lock(tree, &lck);
+       CHECK_STATUS(status, NT_STATUS_OK);
+
+       lck.in.lock_count       = 2;
+       el[0].flags             = SMB2_LOCK_FLAG_UNLOCK;
+       el[1].flags             = SMB2_LOCK_FLAG_UNLOCK;
+       status = smb2_lock(tree, &lck);
+       CHECK_STATUS(status, NT_STATUS_OK);
+
+       lck.in.lock_count       = 1;
+       el[0].flags             = SMB2_LOCK_FLAG_UNLOCK;
+       status = smb2_lock(tree, &lck);
+       CHECK_STATUS(status, NT_STATUS_RANGE_NOT_LOCKED);
+       
 
 done:
        return ret;