s4-smbtorture: try FSCTL_FIND_FILES_BY_SID with random blob data in RAW-IOCTL.
[kamenim/samba.git] / source4 / torture / raw / ioctl.c
index 4cb366f807dfdaa6d794a82ed23a70c7198864e2..99dc039a7f4b18d6e2fa32f8447d3e77b8b0fb51 100644 (file)
@@ -19,7 +19,6 @@
 */
 
 #include "includes.h"
-#include "torture/torture.h"
 #include "libcli/raw/ioctl.h"
 #include "libcli/raw/libcliraw.h"
 #include "libcli/raw/raw_proto.h"
@@ -99,6 +98,27 @@ static bool test_fsctl(struct smbcli_state *cli, TALLOC_CTX *mem_ctx)
                goto done;
        }
 
+       printf("Trying FSCTL_FIND_FILES_BY_SID\n");
+       nt.ioctl.level = RAW_IOCTL_NTIOCTL;
+       nt.ntioctl.in.function = FSCTL_FIND_FILES_BY_SID;
+       nt.ntioctl.in.file.fnum = fnum;
+       nt.ntioctl.in.fsctl = true;
+       nt.ntioctl.in.filter = 0;
+       nt.ntioctl.in.max_data = 0;
+       nt.ntioctl.in.blob = data_blob(NULL, 1024);
+       /* definitely not a sid... */
+       generate_random_buffer(nt.ntioctl.in.blob.data,
+                              nt.ntioctl.in.blob.length);
+       nt.ntioctl.in.blob.data[1] = 15+1;
+       status = smb_raw_ioctl(cli->tree, mem_ctx, &nt);
+       if (!NT_STATUS_EQUAL(status, NT_STATUS_INVALID_PARAMETER) &&
+           !NT_STATUS_EQUAL(status, NT_STATUS_NOT_IMPLEMENTED)) {
+               printf("Got unexpected error code: %s\n",
+                       nt_errstr(status));
+               ret = false;
+               goto done;
+       }
+
        printf("trying sparse file\n");
        nt.ioctl.level = RAW_IOCTL_NTIOCTL;
        nt.ntioctl.in.function = FSCTL_SET_SPARSE;