diff options
| author | David Disseldorp <ddiss@samba.org> | 2014-09-02 20:07:19 +0200 |
|---|---|---|
| committer | Jeremy Allison <jra@samba.org> | 2014-09-08 19:11:13 +0200 |
| commit | 5d8bfb5c41bbddb3c404bd177048fe2e396ce8f2 (patch) | |
| tree | f12dcca6f61d17f5dcd4619b3854984a276e9521 /source4 | |
| parent | 750e67aeb2f86a6b67dc949e2585ee9a585a628e (diff) | |
| download | samba-5d8bfb5c41bbddb3c404bd177048fe2e396ce8f2.tar.gz samba-5d8bfb5c41bbddb3c404bd177048fe2e396ce8f2.tar.xz samba-5d8bfb5c41bbddb3c404bd177048fe2e396ce8f2.zip | |
torture: add file zero-range checker
Signed-off-by: David Disseldorp <ddiss@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
Diffstat (limited to 'source4')
| -rw-r--r-- | source4/torture/smb2/ioctl.c | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/source4/torture/smb2/ioctl.c b/source4/torture/smb2/ioctl.c index 6835bf1cb1..60bc12f43c 100644 --- a/source4/torture/smb2/ioctl.c +++ b/source4/torture/smb2/ioctl.c @@ -186,6 +186,36 @@ static bool check_pattern(struct torture_context *torture, return true; } +static bool check_zero(struct torture_context *torture, + struct smb2_tree *tree, TALLOC_CTX *mem_ctx, + struct smb2_handle h, uint64_t off, uint64_t len) +{ + uint64_t i; + struct smb2_read r; + NTSTATUS status; + + ZERO_STRUCT(r); + r.in.file.handle = h; + r.in.length = len; + r.in.offset = off; + status = smb2_read(tree, mem_ctx, &r); + torture_assert_ntstatus_ok(torture, status, "read"); + + torture_assert_u64_equal(torture, r.out.data.length, len, + "read data len mismatch"); + + for (i = 0; i <= len - 8; i += 8) { + uint64_t data = BVAL(r.out.data.data, i); + torture_assert_u64_equal(torture, data, 0, + talloc_asprintf(mem_ctx, "read zero " + "bad at %llu\n", + (unsigned long long)i)); + } + + talloc_free(r.out.data.data); + return true; +} + static bool test_setup_open(struct torture_context *torture, struct smb2_tree *tree, TALLOC_CTX *mem_ctx, const char *fname, |
