info_level = strtoul(tmp, (char**)NULL, 10);
}
- DEBUG(4,("cmd_srv_query_info: server:%s info level: %D\n",
- dest_srv, info_level));
+ DEBUG(4,("cmd_srv_query_info: server:%s info level: %d\n",
+ dest_srv, (int)info_level));
DEBUG(5, ("cmd_srv_query_info: smb_cli->fd:%d\n", smb_cli->fd));
info_level = strtoul(tmp, (char**)NULL, 10);
}
- DEBUG(4,("cmd_srv_enum_conn: server:%s info level: %D\n",
- dest_srv, info_level));
+ DEBUG(4,("cmd_srv_enum_conn: server:%s info level: %d\n",
+ dest_srv, (int)info_level));
DEBUG(5, ("cmd_srv_enum_conn: smb_cli->fd:%d\n", smb_cli->fd));
info_level = strtoul(tmp, (char**)NULL, 10);
}
- DEBUG(4,("cmd_srv_enum_shares: server:%s info level: %D\n",
- dest_srv, info_level));
+ DEBUG(4,("cmd_srv_enum_shares: server:%s info level: %d\n",
+ dest_srv, (int)info_level));
DEBUG(5, ("cmd_srv_enum_shares: smb_cli->fd:%d\n", smb_cli->fd));
info_level = strtoul(tmp, (char**)NULL, 10);
}
- DEBUG(4,("cmd_srv_enum_sess: server:%s info level: %D\n",
- dest_srv, info_level));
+ DEBUG(4,("cmd_srv_enum_sess: server:%s info level: %d\n",
+ dest_srv, (int)info_level));
DEBUG(5, ("cmd_srv_enum_sess: smb_cli->fd:%d\n", smb_cli->fd));
info_level = strtoul(tmp, (char**)NULL, 10);
}
- DEBUG(4,("cmd_srv_enum_files: server:%s info level: %D\n",
- dest_srv, info_level));
+ DEBUG(4,("cmd_srv_enum_files: server:%s info level: %d\n",
+ dest_srv, (int)info_level));
DEBUG(5, ("cmd_srv_enum_files: smb_cli->fd:%d\n", smb_cli->fd));
static BOOL open_connection(struct cli_state *c)
{
+ struct nmb_name called, calling;
+
if (!cli_initialise(c) || !cli_connect(c, host, NULL)) {
printf("Failed to connect with %s\n", host);
return False;
}
- if (!cli_session_request(c, host, 0x20, myname)) {
+ make_nmb_name(&calling, myname, 0x0, "");
+ make_nmb_name(&called , host, 0x20, "");
+
+ if (!cli_session_request(c, &calling, &called)) {
printf("%s rejected the session\n",host);
cli_shutdown(c);
return False;
}
+/* check if the server produced the expected error code */
+static BOOL check_error(struct cli_state *c,
+ uint8 eclass, uint32 ecode, uint32 nterr)
+{
+ uint8 class;
+ uint32 num;
+ int eno;
+ eno = cli_error(c, &eclass, &num);
+ if ((eclass != class || ecode != num) &&
+ num != (nterr&0xFFFFFF)) {
+ printf("unexpected error code class=%d code=%d\n",
+ (int)class, (int)num);
+ printf(" expected %d/%d %d\n",
+ (int)eclass, (int)ecode, (int)nterr);
+ return False;
+ }
+ return True;
+}
+
+
static BOOL wait_lock(struct cli_state *c, int fnum, uint32 offset, uint32 len)
{
while (!cli_lock(c, fnum, offset, len, -1)) {
- int eclass, num;
- cli_error(c, &eclass, &num);
- if (eclass != ERRDOS || num != ERRlock) {
- printf("lock failed (%s)\n",
- cli_errstr(c));
- return False;
- }
+ if (!check_error(c, ERRDOS, ERRlock, 0)) return False;
}
return True;
}
printf("lock2 succeeded! This is a locking bug\n");
return;
} else {
- int eclass, num;
- cli_error(&cli2, &eclass, &num);
- if (eclass != ERRDOS || num != ERRlock) {
- printf("error should have been ERRDOS/ERRlock (%s)\n",
- cli_errstr(&cli2));
- return;
- }
+ if (!check_error(&cli2, ERRDOS, ERRlock, 0)) return;
}
printf("lock3 succeeded! This is a locking bug\n");
return;
} else {
- int eclass, num;
- cli_error(&cli2, &eclass, &num);
- if (eclass != ERRDOS || num != ERRlock) {
- printf("error should have been ERRDOS/ERRlock (%s)\n",
- cli_errstr(&cli2));
- return;
- }
+ if (!check_error(&cli2, ERRDOS, ERRlock, 0)) return;
}
t2 = time(NULL);
printf("lock4 succeeded! This is a locking bug\n");
return;
} else {
- int eclass, num;
- cli_error(&cli2, &eclass, &num);
- if (eclass != ERRDOS || num != ERRlock) {
- printf("error should have been ERRDOS/ERRlock (%s)\n",
- cli_errstr(&cli2));
- return;
- }
+ if (!check_error(&cli2, ERRDOS, ERRlock, 0)) return;
}
if (!cli_close(&cli1, fnum1)) {
if (cli_lock(&cli, fnum2, 0, 4, 0)) {
printf("lock2 succeeded! This is a locking bug\n");
} else {
- int eclass, num;
- cli_error(&cli, &eclass, &num);
- if (eclass != ERRDOS || num != ERRlock) {
- printf("error should have been ERRDOS/ERRlock (%s)\n",
- cli_errstr(&cli));
- return;
- }
+ if (!check_error(&cli, ERRDOS, ERRlock, 0)) return;
}
cli_setpid(&cli, 2);
if (cli_lock(&cli, fnum3, 0, 4, 0)) {
printf("lock3 succeeded! This is a locking bug\n");
} else {
- int eclass, num;
- cli_error(&cli, &eclass, &num);
- if (eclass != ERRDOS || num != ERRlock) {
- printf("error should have been ERRDOS/ERRlock (%s)\n",
- cli_errstr(&cli));
- return;
- }
+ if (!check_error(&cli, ERRDOS, ERRlock, 0)) return;
}
cli_setpid(&cli, 1);
pstring param;
int api, param_len, i;
static struct cli_state cli;
- struct {
- int api, level;
- char *format;
- char *subformat;
- int len;
- } foo;
printf("starting random ipc test\n");
-static void browse_callback(char *sname, uint32 stype, char *comment)
+static void browse_callback(const char *sname, uint32 stype,
+ const char *comment)
{
printf("\t%20.20s %08x %s\n", sname, stype, comment);
}
O_RDWR | O_CREAT | O_TRUNC, DENY_NONE);
cli_close(&cli, fnum);
if (!cli_qpathinfo2(&cli, fname, &c_time, &a_time, &m_time,
- &w_time, &size, NULL, NULL)) {
+ &w_time, &size, NULL)) {
printf("ERROR: qpathinfo2 failed (%s)\n", cli_errstr(&cli));
} else {
if (w_time < 60*60*24*2) {
}
sleep(3);
if (!cli_qpathinfo2(&cli, "\\trans2\\", &c_time, &a_time, &m_time,
- &w_time, &size, NULL, NULL)) {
+ &w_time, &size, NULL)) {
printf("ERROR: qpathinfo2 failed (%s)\n", cli_errstr(&cli));
}
cli_write(&cli, fnum, (char *)&fnum, 0, sizeof(fnum));
cli_close(&cli, fnum);
if (!cli_qpathinfo2(&cli, "\\trans2\\", &c_time, &a_time, &m_time2,
- &w_time, &size, NULL, NULL)) {
+ &w_time, &size, NULL)) {
printf("ERROR: qpathinfo2 failed (%s)\n", cli_errstr(&cli));
} else {
if (m_time2 == m_time)