return true;
}
-/****************************************************************************
- Open a file - exposing the full horror of the NT API :-).
- Used in smbtorture.
-****************************************************************************/
-
-#if 0
-int cli_nt_create_full(struct cli_state *cli, const char *fname,
- uint32_t CreatFlags, uint32_t DesiredAccess,
- uint32_t FileAttributes, uint32_t ShareAccess,
- uint32_t CreateDisposition, uint32_t CreateOptions,
- uint8_t SecurityFlags)
-{
- char *p;
- int len;
-
- memset(cli->outbuf,'\0',smb_size);
- memset(cli->inbuf,'\0',smb_size);
-
- cli_set_message(cli->outbuf,24,0, true);
-
- SCVAL(cli->outbuf,smb_com,SMBntcreateX);
- SSVAL(cli->outbuf,smb_tid,cli->cnum);
- cli_setup_packet(cli);
-
- SSVAL(cli->outbuf,smb_vwv0,0xFF);
- if (cli->use_oplocks)
- CreatFlags |= (REQUEST_OPLOCK|REQUEST_BATCH_OPLOCK);
-
- SIVAL(cli->outbuf,smb_ntcreate_Flags, CreatFlags);
- SIVAL(cli->outbuf,smb_ntcreate_RootDirectoryFid, 0x0);
- SIVAL(cli->outbuf,smb_ntcreate_DesiredAccess, DesiredAccess);
- SIVAL(cli->outbuf,smb_ntcreate_FileAttributes, FileAttributes);
- SIVAL(cli->outbuf,smb_ntcreate_ShareAccess, ShareAccess);
- SIVAL(cli->outbuf,smb_ntcreate_CreateDisposition, CreateDisposition);
- SIVAL(cli->outbuf,smb_ntcreate_CreateOptions, CreateOptions);
- SIVAL(cli->outbuf,smb_ntcreate_ImpersonationLevel, 0x02);
- SCVAL(cli->outbuf,smb_ntcreate_SecurityFlags, SecurityFlags);
-
- p = smb_buf(cli->outbuf);
- /* this alignment and termination is critical for netapp filers. Don't change */
- p += clistr_align_out(cli, p, 0);
- len = clistr_push(cli, p, fname,
- cli->bufsize - PTR_DIFF(p,cli->outbuf), 0);
- p += len;
- SSVAL(cli->outbuf,smb_ntcreate_NameLength, len);
- /* sigh. this copes with broken netapp filer behaviour */
- p += clistr_push(cli, p, "",
- cli->bufsize - PTR_DIFF(p,cli->outbuf), STR_TERMINATE);
-
- cli_setup_bcc(cli, p);
-
- cli_send_smb(cli);
- if (!cli_receive_smb(cli)) {
- return -1;
- }
-
- if (cli_is_error(cli)) {
- return -1;
- }
-
- return SVAL(cli->inbuf,smb_vwv2 + 1);
-}
-#endif
-
struct cli_ntcreate_state {
uint16_t vwv[24];
uint16_t fnum;
return status;
}
-#if 0
-/****************************************************************************
- Open a file.
-****************************************************************************/
-
-int cli_nt_create(struct cli_state *cli, const char *fname, uint32_t DesiredAccess)
-{
- return cli_nt_create_full(cli, fname, 0, DesiredAccess, 0,
- FILE_SHARE_READ|FILE_SHARE_WRITE, FILE_OPEN, 0x0, 0x0);
-}
-#endif
-
uint8_t *smb_bytes_push_str(uint8_t *buf, bool ucs2,
const char *str, size_t str_len,
size_t *pconverted_size)
return tevent_req_simple_recv_ntstatus(req);
}
-bool cli_close(struct cli_state *cli, uint16_t fnum)
+NTSTATUS cli_close(struct cli_state *cli, uint16_t fnum)
{
TALLOC_CTX *frame = talloc_stackframe();
struct event_context *ev;
struct tevent_req *req;
NTSTATUS status = NT_STATUS_OK;
- bool result = false;
if (cli_has_async_calls(cli)) {
/*
goto fail;
}
- result = NT_STATUS_IS_OK(cli_close_recv(req));
+ status = cli_close_recv(req);
fail:
TALLOC_FREE(frame);
if (!NT_STATUS_IS_OK(status)) {
cli_set_error(cli, status);
}
- return result;
+ return status;
}
/****************************************************************************
correct = False;
}
- if (!cli_close(c, fnum)) {
+ if (!NT_STATUS_IS_OK(cli_close(c, fnum))) {
printf("close failed (%s)\n", cli_errstr(c));
correct = False;
}
}
- if (!cli_close(c, fnum)) {
+ if (!NT_STATUS_IS_OK(cli_close(c, fnum))) {
printf("close failed (%s)\n", cli_errstr(c));
correct = False;
}
}
}
- if (!cli_close(c2, fnum2)) {
+ if (!NT_STATUS_IS_OK(cli_close(c2, fnum2))) {
printf("close failed (%s)\n", cli_errstr(c2));
correct = False;
}
- if (!cli_close(c1, fnum1)) {
+ if (!NT_STATUS_IS_OK(cli_close(c1, fnum1))) {
printf("close failed (%s)\n", cli_errstr(c1));
correct = False;
}
correct = False;
}
- if (!cli_close(cli1, fnum1)) {
+ if (!NT_STATUS_IS_OK(cli_close(cli1, fnum1))) {
printf("close failed (%s)\n", cli_errstr(cli1));
correct = False;
}
printf("readwritelarge test 3 (truncate test) succeeded (size = %x)\n", fsize);
#endif
- if (!cli_close(cli1, fnum1)) {
+ if (!NT_STATUS_IS_OK(cli_close(cli1, fnum1))) {
printf("close failed (%s)\n", cli_errstr(cli1));
correct = False;
}
printf("server slept for %u seconds for a %u second timeout\n",
(unsigned int)(t2-t1), lock_timeout);
- if (!cli_close(cli1, fnum2)) {
+ if (!NT_STATUS_IS_OK(cli_close(cli1, fnum2))) {
printf("close1 failed (%s)\n", cli_errstr(cli1));
return False;
}
NT_STATUS_FILE_LOCK_CONFLICT)) return False;
}
- if (!cli_close(cli1, fnum1)) {
+ if (!NT_STATUS_IS_OK(cli_close(cli1, fnum1))) {
printf("close2 failed (%s)\n", cli_errstr(cli1));
return False;
}
- if (!cli_close(cli2, fnum3)) {
+ if (!NT_STATUS_IS_OK(cli_close(cli2, fnum3))) {
printf("close3 failed (%s)\n", cli_errstr(cli2));
return False;
}
cli->cnum = cnum1;
cli->vuid = vuid1;
- if (!cli_close(cli, fnum1)) {
+ if (!NT_STATUS_IS_OK(cli_close(cli, fnum1))) {
printf("close failed (%s)\n", cli_errstr(cli));
return False;
}
cli_setpid(cli, 1);
- if (!cli_close(cli, fnum1)) {
+ if (!NT_STATUS_IS_OK(cli_close(cli, fnum1))) {
printf("close1 failed (%s)\n", cli_errstr(cli));
return False;
}
- if (!cli_close(cli, fnum2)) {
+ if (!NT_STATUS_IS_OK(cli_close(cli, fnum2))) {
printf("close2 failed (%s)\n", cli_errstr(cli));
return False;
}
- if (!cli_close(cli, fnum3)) {
+ if (!NT_STATUS_IS_OK(cli_close(cli, fnum3))) {
printf("close3 failed (%s)\n", cli_errstr(cli));
return False;
}
}
}
- if (!cli_close(cli1, fnum1)) {
+ if (!NT_STATUS_IS_OK(cli_close(cli1, fnum1))) {
printf("close1 failed (%s)\n", cli_errstr(cli1));
return False;
}
- if (!cli_close(cli2, fnum2)) {
+ if (!NT_STATUS_IS_OK(cli_close(cli2, fnum2))) {
printf("close2 failed (%s)\n", cli_errstr(cli2));
return False;
}
cli_open(cli1, fname, O_RDWR, DENY_NONE, &f);
ret = cli_lock(cli1, fnum1, 0, 8, 0, READ_LOCK) &&
cli_lock(cli1, f, 0, 1, 0, READ_LOCK) &&
- cli_close(cli1, fnum1) &&
- (NT_STATUS_IS_OK(cli_open(cli1, fname, O_RDWR, DENY_NONE, &fnum1))) &&
+ NT_STATUS_IS_OK(cli_close(cli1, fnum1)) &&
+ NT_STATUS_IS_OK(cli_open(cli1, fname, O_RDWR, DENY_NONE, &fnum1)) &&
cli_lock(cli1, fnum1, 7, 1, 0, WRITE_LOCK);
cli_close(cli1, f);
cli_close(cli1, fnum1);
cli_unlink(cli1, fname, aSYSTEM | aHIDDEN);
cli_unlink(cli1, fname, aSYSTEM | aHIDDEN);
- if (!cli_close(cli1, fnum1)) {
+ if (!NT_STATUS_IS_OK(cli_close(cli1, fnum1))) {
printf("close2 failed (%s)\n", cli_errstr(cli1));
return False;
}
sleep(2);
- if (!cli_close(cli2, fnum2)) {
+ if (!NT_STATUS_IS_OK(cli_close(cli2, fnum2))) {
printf("close2 failed (%s)\n", cli_errstr(cli1));
*shared_correct = False;
}
}
#endif
- if (!cli_close(cli1, fnum1)) {
+ if (!NT_STATUS_IS_OK(cli_close(cli1, fnum1))) {
printf("close1 failed (%s)\n", cli_errstr(cli1));
correct = False;
}
}
#endif
- if (!cli_close(cli1, fnum1)) {
+ if (!NT_STATUS_IS_OK(cli_close(cli1, fnum1))) {
printf("[1] close failed (%s)\n", cli_errstr(cli1));
correct = False;
goto fail;
goto fail;
}
- if (!cli_close(cli1, fnum1)) {
+ if (!NT_STATUS_IS_OK(cli_close(cli1, fnum1))) {
printf("[2] close failed (%s)\n", cli_errstr(cli1));
correct = False;
goto fail;
if (NT_STATUS_IS_OK(cli_open(cli1, fname, O_RDONLY, DENY_NONE, &fnum1))) {
printf("[2] open of %s succeeded should have been deleted on close !\n", fname);
- if (!cli_close(cli1, fnum1)) {
+ if (!NT_STATUS_IS_OK(cli_close(cli1, fnum1))) {
printf("[2] close failed (%s)\n", cli_errstr(cli1));
correct = False;
goto fail;
goto fail;
}
- if (!cli_close(cli1, fnum1)) {
+ if (!NT_STATUS_IS_OK(cli_close(cli1, fnum1))) {
printf("[3] close 1 failed (%s)\n", cli_errstr(cli1));
correct = False;
goto fail;
}
- if (!cli_close(cli1, fnum2)) {
+ if (!NT_STATUS_IS_OK(cli_close(cli1, fnum2))) {
printf("[3] close 2 failed (%s)\n", cli_errstr(cli1));
correct = False;
goto fail;
if (NT_STATUS_IS_OK(cli_open(cli1, fname, O_RDONLY, DENY_NONE, &fnum1))) {
printf("[3] open of %s succeeded should have been deleted on close !\n", fname);
- if (!cli_close(cli1, fnum1)) {
+ if (!NT_STATUS_IS_OK(cli_close(cli1, fnum1))) {
printf("[3] close failed (%s)\n", cli_errstr(cli1));
}
cli_unlink(cli1, fname, aSYSTEM | aHIDDEN);
goto fail;
}
- if (!cli_close(cli1, fnum2)) {
+ if (!NT_STATUS_IS_OK(cli_close(cli1, fnum2))) {
printf("[4] close - 1 failed (%s)\n", cli_errstr(cli1));
correct = False;
goto fail;
} else
printf("fourth delete on close test succeeded.\n");
- if (!cli_close(cli1, fnum1)) {
+ if (!NT_STATUS_IS_OK(cli_close(cli1, fnum1))) {
printf("[4] close - 2 failed (%s)\n", cli_errstr(cli1));
correct = False;
goto fail;
goto fail;
}
- if (!cli_close(cli1, fnum1)) {
+ if (!NT_STATUS_IS_OK(cli_close(cli1, fnum1))) {
printf("[5] close - 2 failed (%s)\n", cli_errstr(cli1));
correct = False;
goto fail;
goto fail;
}
- if (!cli_close(cli1, fnum1)) {
+ if (!NT_STATUS_IS_OK(cli_close(cli1, fnum1))) {
printf("[6] close - 2 failed (%s)\n", cli_errstr(cli1));
correct = False;
goto fail;
goto fail;
}
- if (!cli_close(cli1, fnum1)) {
+ if (!NT_STATUS_IS_OK(cli_close(cli1, fnum1))) {
printf("[7] close - 2 failed (%s)\n", cli_errstr(cli1));
correct = False;
goto fail;
goto fail;
}
- if (!cli_close(cli1, fnum1)) {
+ if (!NT_STATUS_IS_OK(cli_close(cli1, fnum1))) {
printf("[7] close - 2 failed (%s)\n", cli_errstr(cli1));
correct = False;
goto fail;
goto fail;
}
- if (!cli_close(cli1, fnum1)) {
+ if (!NT_STATUS_IS_OK(cli_close(cli1, fnum1))) {
printf("[8] close - 1 failed (%s)\n", cli_errstr(cli1));
correct = False;
goto fail;
}
- if (!cli_close(cli2, fnum2)) {
+ if (!NT_STATUS_IS_OK(cli_close(cli2, fnum2))) {
printf("[8] close - 2 failed (%s)\n", cli_errstr(cli2));
correct = False;
goto fail;
}
/* This should delete the file. */
- if (!cli_close(cli1, fnum1)) {
+ if (!NT_STATUS_IS_OK(cli_close(cli1, fnum1))) {
printf("[10] close failed (%s)\n", cli_errstr(cli1));
correct = False;
goto fail;
goto fail;
}
- if (!cli_close(cli1, fnum1)) {
+ if (!NT_STATUS_IS_OK(cli_close(cli1, fnum1))) {
printf("[11] close failed (%s)\n", cli_errstr(cli1));
correct = False;
goto fail;
correct = False;
}
- if (!cli_close(cli1, fnum1)) {
+ if (!NT_STATUS_IS_OK(cli_close(cli1, fnum1))) {
printf("close - 1 failed (%s)\n", cli_errstr(cli1));
return False;
}
printf("Second rename succeeded (SHARE_DELETE | SHARE_READ)\n");
}
- if (!cli_close(cli1, fnum1)) {
+ if (!NT_STATUS_IS_OK(cli_close(cli1, fnum1))) {
printf("close - 2 failed (%s)\n", cli_errstr(cli1));
return False;
}
return False;
}
- if (!cli_close(cli1, fnum2)) {
+ if (!NT_STATUS_IS_OK(cli_close(cli1, fnum2))) {
printf("close - 4 failed (%s)\n", cli_errstr(cli1));
return False;
}
printf("Third rename succeeded (SHARE_NONE)\n");
}
- if (!cli_close(cli1, fnum1)) {
+ if (!NT_STATUS_IS_OK(cli_close(cli1, fnum1))) {
printf("close - 3 failed (%s)\n", cli_errstr(cli1));
return False;
}
correct = False;
}
- if (!cli_close(cli1, fnum1)) {
+ if (!NT_STATUS_IS_OK(cli_close(cli1, fnum1))) {
printf("close - 4 failed (%s)\n", cli_errstr(cli1));
return False;
}
/*--*/
- if (!cli_close(cli1, fnum1)) {
+ if (!NT_STATUS_IS_OK(cli_close(cli1, fnum1))) {
printf("close - 5 failed (%s)\n", cli_errstr(cli1));
return False;
}
return False;
}
- if (!cli_close(cli1, fnum1)) {
+ if (!NT_STATUS_IS_OK(cli_close(cli1, fnum1))) {
printf("close2 failed (%s)\n", cli_errstr(cli1));
return False;
}
printf("correct error code ERRDOS/ERRbadshare returned\n");
}
- if (!cli_close(cli1, fnum1)) {
+ if (!NT_STATUS_IS_OK(cli_close(cli1, fnum1))) {
printf("close2 failed (%s)\n", cli_errstr(cli1));
return False;
}
correct = False;
}
- if (!cli_close(cli1, fnum1)) {
+ if (!NT_STATUS_IS_OK(cli_close(cli1, fnum1))) {
printf("(3) close1 failed (%s)\n", cli_errstr(cli1));
return False;
}
return False;
}
- if (!cli_close(cli1, fnum1)) {
+ if (!NT_STATUS_IS_OK(cli_close(cli1, fnum1))) {
printf("close2 failed (%s)\n", cli_errstr(cli1));
return False;
}
return False;
}
printf("ctemp gave path %s\n", tmp_path);
- if (!cli_close(cli1, fnum1)) {
+ if (!NT_STATUS_IS_OK(cli_close(cli1, fnum1))) {
printf("close of temp failed (%s)\n", cli_errstr(cli1));
}
if (!NT_STATUS_IS_OK(cli_unlink(cli1, tmp_path, aSYSTEM | aHIDDEN))) {
return False;
}
- if (!cli_close(cli1, fnum1)) {
+ if (!NT_STATUS_IS_OK(cli_close(cli1, fnum1))) {
printf("test 1 close 1 of %s failed (%s)\n", fname, cli_errstr(cli1));
return False;
}
- if (!cli_close(cli2, fnum2)) {
+ if (!NT_STATUS_IS_OK(cli_close(cli2, fnum2))) {
printf("test 1 close 2 of %s failed (%s)\n", fname, cli_errstr(cli2));
return False;
}
return False;
}
- if (!cli_close(cli1, fnum1)) {
+ if (!NT_STATUS_IS_OK(cli_close(cli1, fnum1))) {
printf("test 1 close 1 of %s failed (%s)\n", fname, cli_errstr(cli1));
return False;
}
- if (!cli_close(cli2, fnum2)) {
+ if (!NT_STATUS_IS_OK(cli_close(cli2, fnum2))) {
printf("test 1 close 2 of %s failed (%s)\n", fname, cli_errstr(cli1));
return False;
}
return False;
}
- if (!cli_close(cli1, fnum1)) {
+ if (!NT_STATUS_IS_OK(cli_close(cli1, fnum1))) {
printf("test 3 close 1 of %s failed (%s)\n", fname, cli_errstr(cli1));
return False;
}
- if (!cli_close(cli2, fnum2)) {
+ if (!NT_STATUS_IS_OK(cli_close(cli2, fnum2))) {
printf("test 3 close 2 of %s failed (%s)\n", fname, cli_errstr(cli2));
return False;
}
printf("test 3 open 2 of %s gave %s (correct error should be %s)\n", fname, cli_errstr(cli2), "sharing violation");
- if (!cli_close(cli1, fnum1)) {
+ if (!NT_STATUS_IS_OK(cli_close(cli1, fnum1))) {
printf("test 4 close 1 of %s failed (%s)\n", fname, cli_errstr(cli1));
return False;
}
return False;
}
- if (!cli_close(cli1, fnum1)) {
+ if (!NT_STATUS_IS_OK(cli_close(cli1, fnum1))) {
printf("test 5 close 1 of %s failed (%s)\n", fname, cli_errstr(cli1));
return False;
}
- if (!cli_close(cli2, fnum2)) {
+ if (!NT_STATUS_IS_OK(cli_close(cli2, fnum2))) {
printf("test 5 close 2 of %s failed (%s)\n", fname, cli_errstr(cli2));
return False;
}
return False;
}
- if (!cli_close(cli1, fnum1)) {
+ if (!NT_STATUS_IS_OK(cli_close(cli1, fnum1))) {
printf("test 6 close 1 of %s failed (%s)\n", fname, cli_errstr(cli1));
return False;
}
- if (!cli_close(cli2, fnum2)) {
+ if (!NT_STATUS_IS_OK(cli_close(cli2, fnum2))) {
printf("test 6 close 2 of %s failed (%s)\n", fname, cli_errstr(cli2));
return False;
}
printf("test 7 open 2 of %s gave %s (correct error should be %s)\n", fname, cli_errstr(cli2), "sharing violation");
- if (!cli_close(cli1, fnum1)) {
+ if (!NT_STATUS_IS_OK(cli_close(cli1, fnum1))) {
printf("test 7 close 1 of %s failed (%s)\n", fname, cli_errstr(cli1));
return False;
}
goto out;
}
- if (!cli_close(cli1, fnum1)) {
+ if (!NT_STATUS_IS_OK(cli_close(cli1, fnum1))) {
printf("close failed (%s)\n", cli_errstr(cli1));
goto out;
}
goto out;
}
- if (!cli_close(cli1, fnum1)) {
+ if (!NT_STATUS_IS_OK(cli_close(cli1, fnum1))) {
printf("close(2) failed (%s)\n", cli_errstr(cli1));
goto out;
}
return False;
}
- if (!cli_close(cli1, fnum1)) {
+ if (!NT_STATUS_IS_OK(cli_close(cli1, fnum1))) {
printf("close %d (1) of %s failed (%s)\n", i, fname, cli_errstr(cli1));
return False;
}
continue;
}
- if (!cli_close(cli1, fnum1)) {
+ if (!NT_STATUS_IS_OK(cli_close(cli1, fnum1))) {
printf("close %d (2) of %s failed (%s)\n", j, fname, cli_errstr(cli1));
return False;
}