summaryrefslogtreecommitdiffstats
path: root/source4
diff options
context:
space:
mode:
authorDavid Disseldorp <ddiss@samba.org>2014-09-02 20:07:19 +0200
committerJeremy Allison <jra@samba.org>2014-09-08 19:11:13 +0200
commit5d8bfb5c41bbddb3c404bd177048fe2e396ce8f2 (patch)
treef12dcca6f61d17f5dcd4619b3854984a276e9521 /source4
parent750e67aeb2f86a6b67dc949e2585ee9a585a628e (diff)
downloadsamba-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.c30
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,