summaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
Diffstat (limited to 'source')
-rw-r--r--source/browserd/browserd.c4
-rw-r--r--source/include/ntdomain.h14
-rw-r--r--source/include/proto.h22
-rw-r--r--source/include/rpcclient.h1
-rw-r--r--source/lib/domain_namemap.c8
-rw-r--r--source/lib/membuffer.c104
-rw-r--r--source/lib/msrpc-client.c4
-rw-r--r--source/lib/util_hnd.c10
-rw-r--r--source/libsmb/clientgen.c2
-rw-r--r--source/lsarpcd/lsarpcd.c5
-rw-r--r--source/lsarpcd/srv_lsa.c2
-rw-r--r--source/mem_man/mem_man.c5
-rw-r--r--source/msrpc/msrpcd.c3
-rw-r--r--source/netlogond/netlogond.c4
-rw-r--r--source/rpc_client/cli_connect.c10
-rw-r--r--source/rpc_client/cli_lsarpc.c32
-rw-r--r--source/rpc_client/cli_pipe.c48
-rw-r--r--source/rpc_client/cli_reg.c72
-rw-r--r--source/rpc_client/cli_samr.c148
-rw-r--r--source/rpc_client/cli_svcctl.c32
-rw-r--r--source/rpc_parse/parse_prs.c78
-rw-r--r--source/rpc_server/srv_pipe.c13
-rw-r--r--source/rpc_server/srv_pipe_hnd.c3
-rw-r--r--source/rpcclient/cmd_netlogon.c14
-rw-r--r--source/rpcclient/cmd_samr.c10
-rw-r--r--source/rpcclient/cmd_spoolss.c10
-rw-r--r--source/rpcclient/rpcclient.c36
-rw-r--r--source/samrd/samrd.c9
-rw-r--r--source/spoolssd/spoolssd.c4
-rw-r--r--source/srvsvcd/srvsvcd.c4
-rw-r--r--source/svcctld/svcctld.c4
-rw-r--r--source/utils/rpctorture.c6
-rw-r--r--source/winregd/winregd.c4
-rw-r--r--source/wkssvcd/wkssvcd.c4
34 files changed, 399 insertions, 330 deletions
diff --git a/source/browserd/browserd.c b/source/browserd/browserd.c
index dde62721ead..d5e60f21bc8 100644
--- a/source/browserd/browserd.c
+++ b/source/browserd/browserd.c
@@ -30,8 +30,9 @@ extern BOOL append_log;
/*************************************************************************
initialise an msrpc service
*************************************************************************/
-void msrpc_service_init(void)
+void msrpc_service_init(char* service_name)
{
+ add_msrpc_command_processor( pipe_name, service_name, api_brs_rpc );
}
/****************************************************************************
@@ -91,7 +92,6 @@ BOOL reload_services(BOOL test)
setup_logging(argv[0],False);
fstrcpy(pipe_name, "browser");
slprintf(debugf, sizeof(debugf), "%s/log.%s", LOGFILEBASE, pipe_name);
- add_msrpc_command_processor( pipe_name, argv[0], api_brs_rpc );
return msrpc_main(argc, argv);
}
diff --git a/source/include/ntdomain.h b/source/include/ntdomain.h
index e27f3cc68d8..1548e98ee15 100644
--- a/source/include/ntdomain.h
+++ b/source/include/ntdomain.h
@@ -52,13 +52,25 @@
* in the NTDOM branch - it didn't belong there.
*/
+#define CHECK_STRUCT(data) \
+{ \
+ if ((data)->struct_start != 0xfefefefe || \
+ (data)->struct_end != 0xdcdcdcdc) \
+ { \
+ DEBUG(0,("uninitialised structure (%s, %d)\n", \
+ __FUNCTION__, __LINE__)); \
+ } \
+}
+
typedef struct
{
+ uint32 struct_start;
struct mem_buf *data; /* memory buffer */
uint32 offset; /* offset currently being accessed in memory buffer */
uint8 align; /* data alignment */
BOOL io; /* parsing in or out of data stream */
BOOL error; /* error occurred */
+ uint32 struct_end;
} prs_struct;
@@ -152,6 +164,7 @@ struct mem_desc
struct mem_buf
{
+ uint32 struct_start;
BOOL dynamic; /* True iff data has been dynamically allocated
(and therefore can be freed) */
char *data;
@@ -165,6 +178,7 @@ struct mem_buf
struct mem_desc offset;
struct mem_buf *next;
+ uint32 struct_end;
};
struct acct_info
diff --git a/source/include/proto.h b/source/include/proto.h
index 47d8b1b7fa4..a7372f4e397 100644
--- a/source/include/proto.h
+++ b/source/include/proto.h
@@ -5,7 +5,7 @@
/*The following definitions come from browserd/browserd.c */
-void msrpc_service_init(void);
+void msrpc_service_init(char* service_name);
BOOL reload_services(BOOL test);
/*The following definitions come from client/client.c */
@@ -283,7 +283,7 @@ void mem_free_data(struct mem_buf *buf);
BOOL mem_realloc_data(struct mem_buf *buf, size_t new_size);
BOOL mem_grow_data(struct mem_buf **buf, BOOL io, int new_size, BOOL force_grow);
uint32 mem_buf_len(struct mem_buf *buf);
-char *mem_data(struct mem_buf **buf, uint32 offset);
+char *mem_data(struct mem_buf *buf, uint32 offset);
/*The following definitions come from lib/msrpc-agent.c */
@@ -1044,7 +1044,7 @@ struct shmem_ops *sysv_shm_open(int ronly);
/*The following definitions come from lsarpcd/lsarpcd.c */
-void msrpc_service_init(void);
+void msrpc_service_init(char* service_name);
BOOL reload_services(BOOL test);
/*The following definitions come from lsarpcd/srv_lsa.c */
@@ -1054,7 +1054,7 @@ BOOL api_ntlsa_rpc(rpcsrv_struct *p, prs_struct *data);
/*The following definitions come from mem_man/mem_man.c */
void *smb_mem_malloc(size_t size,char *file,int line);
-char *smb_mem_strdup(char *s, char *file, int line);
+char *smb_mem_strdup(const char *s, char *file, int line);
int smb_mem_free(void *ptr,char *file,int line);
void smb_mem_write_info(void *ptr,FILE *outfile);
size_t smb_mem_query_size(void *ptr);
@@ -1081,7 +1081,7 @@ void msrpcd_process(int c, pipes_struct *p);
/*The following definitions come from netlogond/netlogond.c */
-void msrpc_service_init(void);
+void msrpc_service_init(char* service_name);
BOOL reload_services(BOOL test);
/*The following definitions come from nmbd/asyncdns.c */
@@ -4094,7 +4094,7 @@ void readline_init(void);
/*The following definitions come from samrd/samrd.c */
-void msrpc_service_init(void);
+void msrpc_service_init(char* service_name);
BOOL reload_services(BOOL test);
/*The following definitions come from smbd/blocking.c */
@@ -4581,17 +4581,17 @@ int smbw_stat(const char *fname, struct stat *st);
/*The following definitions come from spoolssd/spoolssd.c */
-void msrpc_service_init(void);
+void msrpc_service_init(char* service_name);
BOOL reload_services(BOOL test);
/*The following definitions come from srvsvcd/srvsvcd.c */
-void msrpc_service_init(void);
+void msrpc_service_init(char* service_name);
BOOL reload_services(BOOL test);
/*The following definitions come from svcctld/svcctld.c */
-void msrpc_service_init(void);
+void msrpc_service_init(char* service_name);
BOOL reload_services(BOOL test);
/*The following definitions come from utils/smbpasswd.c */
@@ -4633,11 +4633,11 @@ void status_page(void);
/*The following definitions come from winregd/winregd.c */
-void msrpc_service_init(void);
+void msrpc_service_init(char* service_name);
BOOL reload_services(BOOL test);
/*The following definitions come from wkssvcd/wkssvcd.c */
-void msrpc_service_init(void);
+void msrpc_service_init(char* service_name);
BOOL reload_services(BOOL test);
#endif /* _PROTO_H_ */
diff --git a/source/include/rpcclient.h b/source/include/rpcclient.h
index 63b8e83a555..11e7ff4a28b 100644
--- a/source/include/rpcclient.h
+++ b/source/include/rpcclient.h
@@ -77,7 +77,6 @@ struct client_info
fstring dest_host;
fstring myhostname;
- fstring mach_acct;
struct tar_client_info tar;
struct nt_client_info dom;
diff --git a/source/lib/domain_namemap.c b/source/lib/domain_namemap.c
index 9c947832395..78a2a8a61be 100644
--- a/source/lib/domain_namemap.c
+++ b/source/lib/domain_namemap.c
@@ -882,8 +882,7 @@ static BOOL lookup_remote_ntname(const char *ntname, DOM_SID *sid, uint8 *type)
struct cli_state cli;
POLICY_HND lsa_pol;
fstring srv_name;
- extern struct ntuser_creds *usr_creds;
- struct ntuser_creds usr;
+ extern struct user_creds *usr_creds;
BOOL res3 = True;
BOOL res4 = True;
@@ -892,10 +891,7 @@ static BOOL lookup_remote_ntname(const char *ntname, DOM_SID *sid, uint8 *type)
uint8 *types;
char *names[1];
- usr_creds = &usr;
-
- ZERO_STRUCT(usr);
- pwd_set_nullpwd(&usr.pwd);
+ usr_creds = NULL;
DEBUG(5,("lookup_remote_ntname: %s\n", ntname));
diff --git a/source/lib/membuffer.c b/source/lib/membuffer.c
index e228503643f..fc4a88aeadf 100644
--- a/source/lib/membuffer.c
+++ b/source/lib/membuffer.c
@@ -60,6 +60,7 @@ extern int DEBUGLEVEL;
********************************************************************/
void mem_init(struct mem_buf *buf, int margin)
{
+ buf->struct_start = 0xfefefefe;
buf->dynamic = True;
buf->data = NULL;
buf->data_size = 0;
@@ -71,6 +72,8 @@ void mem_init(struct mem_buf *buf, int margin)
buf->offset.start = 0;
buf->offset.end = 0x0;
+ buf->struct_end = 0xdcdcdcdc;
+ CHECK_STRUCT(buf);
}
/*******************************************************************
@@ -81,6 +84,7 @@ void mem_init(struct mem_buf *buf, int margin)
********************************************************************/
void mem_create(struct mem_buf *buf, char *data, int offset, int size, int margin, BOOL dynamic)
{
+ buf->struct_start = 0xfefefefe;
buf->dynamic = dynamic;
buf->data = data;
buf->data_size = size;
@@ -92,6 +96,8 @@ void mem_create(struct mem_buf *buf, char *data, int offset, int size, int margi
buf->offset.start = offset;
buf->offset.end = offset + size;
+ buf->struct_end = 0xdcdcdcdc;
+ CHECK_STRUCT(buf);
}
/*******************************************************************
@@ -99,6 +105,7 @@ void mem_create(struct mem_buf *buf, char *data, int offset, int size, int margi
********************************************************************/
BOOL mem_alloc_data(struct mem_buf *buf, int size)
{
+ CHECK_STRUCT(buf);
if (!buf->dynamic)
{
DEBUG(3,("mem_alloc_data: warning - memory buffer type is set to static\n"));
@@ -121,10 +128,42 @@ BOOL mem_alloc_data(struct mem_buf *buf, int size)
bzero(buf->data, buf->data_size);
buf->offset.end = buf->offset.start + size;
+ CHECK_STRUCT(buf);
return True;
}
/*******************************************************************
+ search for a memory buffer that falls within the specified offset
+ ********************************************************************/
+static struct mem_buf *mem_find(struct mem_buf *buf, uint32 offset)
+{
+ struct mem_buf *f;
+ if (buf == NULL) return False;
+
+ f = buf;
+
+ CHECK_STRUCT(f);
+ DEBUG(200,("mem_find: data[%d..%d] offset: %d\n",
+ f->offset.start, f->offset.end, offset));
+
+ while (f != NULL && offset >= f->offset.end)
+ {
+ DEBUG(200,("mem_find: next[%d..%d]\n",
+ f->offset.start, f->offset.end));
+
+ f = f->next;
+ }
+
+ if (f != NULL)
+ {
+ DEBUG(200,("mem_find: found data[%d..%d]\n",
+ f->offset.start, f->offset.end));
+ }
+
+ return f;
+}
+
+/*******************************************************************
allocates a memory buffer structure
********************************************************************/
BOOL mem_buf_copy(char *copy_into, struct mem_buf *buf,
@@ -134,20 +173,23 @@ BOOL mem_buf_copy(char *copy_into, struct mem_buf *buf,
char *q = NULL;
uint32 data_len = mem_buf_len(buf);
uint32 start_offset = offset;
- struct mem_buf **bcp = &buf;
+ struct mem_buf *bcp = buf;
if (buf == NULL || copy_into == NULL) return False;
+ CHECK_STRUCT(buf);
DEBUG(200,("mem_buf_copy: data[%d..%d] offset %d len %d\n",
buf->offset.start, data_len, offset, len));
/* there's probably an off-by-one bug, here, and i haven't even tested the code :-) */
while (offset < end && ((q = mem_data(bcp, offset)) != NULL))
{
- uint32 copy_len = (*bcp)->offset.end - offset;
+ uint32 copy_len;
+ bcp = mem_find(bcp, offset);
+ copy_len = bcp->offset.end - offset;
DEBUG(200,("\tdata[%d..%d] - offset %d len %d\n",
- (*bcp)->offset.start, (*bcp)->offset.end,
+ bcp->offset.start, bcp->offset.end,
offset, copy_len));
memcpy(copy_into, q, copy_len);
@@ -156,7 +198,7 @@ BOOL mem_buf_copy(char *copy_into, struct mem_buf *buf,
copy_into += copy_len;
}
- if ((*bcp) != NULL)
+ if (bcp != NULL)
{
DEBUG(200,("mem_buf_copy: copied %d bytes\n", offset - start_offset));
}
@@ -186,6 +228,7 @@ BOOL mem_buf_init(struct mem_buf **buf, uint32 margin)
}
else
{
+ CHECK_STRUCT(*buf);
(*buf)->margin = margin;
return True;
}
@@ -200,6 +243,7 @@ void mem_buf_free(struct mem_buf **buf)
if (buf == NULL) return;
if ((*buf) == NULL) return;
+ CHECK_STRUCT(*buf);
mem_free_data(*buf); /* delete memory data */
free(*buf); /* delete item */
(*buf) = NULL;
@@ -213,6 +257,7 @@ static void mem_free_chain(struct mem_buf **buf)
if (buf == NULL) return;
if ((*buf) == NULL) return;
+ CHECK_STRUCT(*buf);
if ((*buf)->next != NULL)
{
mem_free_chain(&((*buf)->next)); /* delete all other items in chain */
@@ -229,6 +274,7 @@ void mem_free_data(struct mem_buf *buf)
if (buf->data != NULL && buf->dynamic)
{
+ CHECK_STRUCT(buf);
free(buf->data); /* delete data in this structure */
buf->data = NULL;
}
@@ -242,9 +288,11 @@ BOOL mem_realloc_data(struct mem_buf *buf, size_t new_size)
{
char *new_data;
+ CHECK_STRUCT(buf);
if (!buf->dynamic)
{
DEBUG(3,("mem_realloc_data: memory buffer has not been dynamically allocated!\n"));
+ sleep(30);
return False;
}
@@ -290,6 +338,13 @@ BOOL mem_realloc_data(struct mem_buf *buf, size_t new_size)
********************************************************************/
BOOL mem_grow_data(struct mem_buf **buf, BOOL io, int new_size, BOOL force_grow)
{
+ if (buf == NULL || ((*buf) == NULL))
+ {
+ return False;
+ }
+
+ CHECK_STRUCT(*buf);
+
if (new_size + (*buf)->margin >= (*buf)->data_size)
{
if (!io || force_grow)
@@ -304,38 +359,6 @@ BOOL mem_grow_data(struct mem_buf **buf, BOOL io, int new_size, BOOL force_grow)
return True;
}
-/*******************************************************************
- search for a memory buffer that falls within the specified offset
- ********************************************************************/
-static BOOL mem_find(struct mem_buf **buf, uint32 offset)
-{
- struct mem_buf *f;
- if (buf == NULL) return False;
-
- f = *buf;
-
- DEBUG(200,("mem_find: data[%d..%d] offset: %d\n",
- f->offset.start, f->offset.end, offset));
-
- while (f != NULL && offset >= f->offset.end)
- {
- DEBUG(200,("mem_find: next[%d..%d]\n",
- f->offset.start, f->offset.end));
-
- f = f->next;
- }
-
- (*buf) = f;
-
- if (f != NULL)
- {
- DEBUG(200,("mem_find: found data[%d..%d]\n",
- (*buf)->offset.start,(*buf)->offset.end));
- }
-
- return f != NULL;
-}
-
/*******************************************************************
add up the lengths of all sections.
@@ -343,6 +366,7 @@ static BOOL mem_find(struct mem_buf **buf, uint32 offset)
uint32 mem_buf_len(struct mem_buf *buf)
{
int len = 0;
+ CHECK_STRUCT(buf);
while (buf != NULL)
{
len += buf->offset.end - buf->offset.start;
@@ -355,11 +379,13 @@ uint32 mem_buf_len(struct mem_buf *buf)
/*******************************************************************
return the memory location specified by offset. may return NULL.
********************************************************************/
-char *mem_data(struct mem_buf **buf, uint32 offset)
+char *mem_data(struct mem_buf *buf, uint32 offset)
{
- if (mem_find(buf, offset))
+ CHECK_STRUCT(buf);
+ buf = mem_find(buf, offset);
+ if (buf != NULL)
{
- return &((*buf)->data[offset - (*buf)->offset.start]);
+ return &(buf->data[offset - buf->offset.start]);
}
return NULL;
}
diff --git a/source/lib/msrpc-client.c b/source/lib/msrpc-client.c
index 583aaafaf1b..1612bbe0d08 100644
--- a/source/lib/msrpc-client.c
+++ b/source/lib/msrpc-client.c
@@ -79,7 +79,7 @@ BOOL msrpc_receive_prs(struct msrpc_state *msrpc, prs_struct *ps)
prs_init(ps, len, 4, 0, False);
ps->offset = len;
- data = mem_data(&ps->data, 0);
+ data = mem_data(ps->data, 0);
if (data == NULL || len <= 0)
{
return False;
@@ -192,7 +192,7 @@ static BOOL msrpc_authenticate(struct msrpc_state *msrpc,
}
len = ps.offset;
- data = mem_data(&ps.data, 0);
+ data = mem_data(ps.data, 0);
SIVAL(data, 0, len);
diff --git a/source/lib/util_hnd.c b/source/lib/util_hnd.c
index cf8377b0d0d..e631ce615ac 100644
--- a/source/lib/util_hnd.c
+++ b/source/lib/util_hnd.c
@@ -60,7 +60,7 @@ struct samr_info
struct con_info
{
struct cli_connection *con;
- void (*free)(struct cli_connection*);
+ void (*free_con)(struct cli_connection*);
};
static struct policy
@@ -445,8 +445,8 @@ BOOL set_policy_con(POLICY_HND *hnd, struct cli_connection *con,
{
return False;
}
- p->dev.con->con = con;
- p->dev.con->free = free_fn;
+ p->dev.con->con = con;
+ p->dev.con->free_con = free_fn;
return True;
}
@@ -519,9 +519,9 @@ BOOL close_policy_hnd(POLICY_HND *hnd)
}
case POL_CLI_INFO:
{
- if (p->dev.con->free != NULL)
+ if (p->dev.con->free_con != NULL)
{
- p->dev.con->free(p->dev.con->con);
+ p->dev.con->free_con(p->dev.con->con);
}
free(p->dev.con);
break;
diff --git a/source/libsmb/clientgen.c b/source/libsmb/clientgen.c
index e8c581bbcb6..5ececc72614 100644
--- a/source/libsmb/clientgen.c
+++ b/source/libsmb/clientgen.c
@@ -3008,7 +3008,7 @@ static BOOL cli_init_redirect(struct cli_state *cli,
}
len = ps.offset;
- data = mem_data(&ps.data, 0);
+ data = mem_data(ps.data, 0);
#ifdef DEBUG_PASSWORD
DEBUG(100,("data len: %d\n", len));
diff --git a/source/lsarpcd/lsarpcd.c b/source/lsarpcd/lsarpcd.c
index 622660e0349..36505d1a34f 100644
--- a/source/lsarpcd/lsarpcd.c
+++ b/source/lsarpcd/lsarpcd.c
@@ -28,8 +28,10 @@ extern pstring debugf;
extern BOOL append_log;
extern int DEBUGLEVEL;
-void msrpc_service_init(void)
+void msrpc_service_init(char* service_name)
{
+ add_msrpc_command_processor( pipe_name, service_name, api_ntlsa_rpc );
+
if (!pwdb_initialise(True))
{
exit(-1);
@@ -100,7 +102,6 @@ BOOL reload_services(BOOL test)
fstrcpy(pipe_name, "lsarpc");
setup_logging(argv[0],False);
slprintf(debugf, sizeof(debugf), "%s/log.%s", LOGFILEBASE, pipe_name);
- add_msrpc_command_processor( pipe_name, argv[0], api_ntlsa_rpc );
return msrpc_main(argc, argv);
}
diff --git a/source/lsarpcd/srv_lsa.c b/source/lsarpcd/srv_lsa.c
index 5f8fca32dee..7a2ca4f22f2 100644
--- a/source/lsarpcd/srv_lsa.c
+++ b/source/lsarpcd/srv_lsa.c
@@ -651,7 +651,7 @@ static void api_lsa_open_secret( rpcsrv_struct *p, prs_struct *data,
prs_struct *rdata)
{
/* XXXX this is NOT good */
- char *q = mem_data(&(rdata->data), rdata->offset);
+ char *q = mem_data(rdata->data, rdata->offset);
SIVAL(q, 0, 0);
q += 4;
diff --git a/source/mem_man/mem_man.c b/source/mem_man/mem_man.c
index 34ae6fd43c1..ec0ac1dd5ff 100644
--- a/source/mem_man/mem_man.c
+++ b/source/mem_man/mem_man.c
@@ -195,7 +195,6 @@ static void error_signal_handler()
mem_check_buffers();
smb_mem_write_status(dbf);
smb_mem_write_errors(dbf);
- abort();
}
#endif
@@ -259,7 +258,7 @@ static int mem_first_avail_slot(void)
/*******************************************************************
find which Index a pointer refers to
********************************************************************/
-static int mem_find_Index(void *ptr)
+static int mem_find_Index(const void *ptr)
{
int i;
int start = last_block_allocated+mem_blocks_allocated/50;
@@ -410,7 +409,7 @@ void *smb_mem_malloc(size_t size,char *file,int line)
/*******************************************************************
dup a string
********************************************************************/
-char *smb_mem_strdup(char *s, char *file, int line)
+char *smb_mem_strdup(const char *s, char *file, int line)
{
char *ret = (char *)smb_mem_malloc(strlen(s)+1, file, line);
strcpy(ret, s);
diff --git a/source/msrpc/msrpcd.c b/source/msrpc/msrpcd.c
index 2bfea6aebcf..dcf57d175cc 100644
--- a/source/msrpc/msrpcd.c
+++ b/source/msrpc/msrpcd.c
@@ -555,7 +555,8 @@ int msrpc_main(int argc,char *argv[])
DEBUG(2,("Changed root to %s\n", lp_rootdir()));
}
- msrpc_service_init();
+ msrpc_service_init(argv[0]);
+ dbgflush();
ZERO_STRUCT(static_pipe);
fstrcpy(static_pipe.name, pipe_name);
diff --git a/source/netlogond/netlogond.c b/source/netlogond/netlogond.c
index a3a31574b79..27c9d63cbc6 100644
--- a/source/netlogond/netlogond.c
+++ b/source/netlogond/netlogond.c
@@ -31,8 +31,9 @@ extern int DEBUGLEVEL;
/*************************************************************************
initialise an msrpc service
*************************************************************************/
-void msrpc_service_init(void)
+void msrpc_service_init(char* service_name)
{
+ add_msrpc_command_processor( pipe_name, service_name, api_netlog_rpc );
if (!pwdb_initialise(True) || !initialise_password_db())
{
exit(-1);
@@ -128,7 +129,6 @@ BOOL reload_services(BOOL test)
setup_logging(argv[0],False);
fstrcpy(pipe_name, "NETLOGON");
slprintf(debugf, sizeof(debugf), "%s/log.%s", LOGFILEBASE, pipe_name);
- add_msrpc_command_processor( pipe_name, argv[0], api_netlog_rpc );
return msrpc_main(argc, argv);
}
diff --git a/source/rpc_client/cli_connect.c b/source/rpc_client/cli_connect.c
index 92a90caaaa8..560f4d6ecdb 100644
--- a/source/rpc_client/cli_connect.c
+++ b/source/rpc_client/cli_connect.c
@@ -24,7 +24,7 @@
#include "includes.h"
-struct ntuser_creds *usr_creds = NULL;
+struct user_creds *usr_creds = NULL;
extern int DEBUGLEVEL;
extern pstring scope;
@@ -102,9 +102,7 @@ static struct cli_connection *cli_con_get(const char* srv_name,
memset(con, 0, sizeof(*con));
con->type = MSRPC_NONE;
- copy_user_creds(&con->usr_creds, NULL);
- copy_nt_creds(&con->usr_creds.ntc, usr_creds);
- con->usr_creds.ptr_ntc = 1;
+ copy_user_creds(&con->usr_creds, usr_creds);
con->usr_creds.reuse = reuse;
if (srv_name != NULL)
@@ -606,6 +604,10 @@ BOOL rpc_hnd_pipe_req(const POLICY_HND *hnd, uint8 op_num,
BOOL rpc_con_pipe_req(struct cli_connection *con, uint8 op_num,
prs_struct *data, prs_struct *rdata)
{
+ DEBUG(10,("rpc_con_pipe_req: op_num %d offset %d used: %d\n",
+ op_num, data->offset, data->data->data_used));
+ data->data->margin = 0;
+ mem_realloc_data(data->data, data->offset);
return rpc_api_pipe_req(con, op_num, data, rdata);
}
diff --git a/source/rpc_client/cli_lsarpc.c b/source/rpc_client/cli_lsarpc.c
index b039bde159b..14a2198193f 100644
--- a/source/rpc_client/cli_lsarpc.c
+++ b/source/rpc_client/cli_lsarpc.c
@@ -43,12 +43,9 @@ BOOL get_domain_sids(const char *domain, DOM_SID *sid3, DOM_SID *sid5)
BOOL res1 = True;
fstring dom3;
fstring dom5;
- extern struct ntuser_creds *usr_creds;
- struct ntuser_creds usr;
+ extern struct user_creds *usr_creds;
- usr_creds = &usr;
- ZERO_STRUCT(usr);
- pwd_set_nullpwd(&usr.pwd);
+ usr_creds = NULL;
if (sid3 == NULL && sid5 == NULL)
{
@@ -139,12 +136,9 @@ BOOL get_trust_sid_and_domain(const char* myname, char *server,
fstring dom3;
fstring dom5;
- extern struct ntuser_creds *usr_creds;
- struct ntuser_creds usr;
+ extern struct user_creds *usr_creds;
- usr_creds = &usr;
- ZERO_STRUCT(usr);
- pwd_set_nullpwd(&usr.pwd);
+ usr_creds = NULL;
if (!cli_connection_init_list(server, PIPE_LSARPC, &con))
{
@@ -228,7 +222,7 @@ BOOL lsa_open_policy(const char *server_name, POLICY_HND *hnd,
if (hnd == NULL) return False;
- prs_init(&buf , 1024, 4, SAFETY_MARGIN, False);
+ prs_init(&buf , 0, 4, SAFETY_MARGIN, False);
prs_init(&rbuf, 0 , 4, SAFETY_MARGIN, True );
/* create and send a MSRPC command with api LSA_OPENPOLICY */
@@ -303,7 +297,7 @@ BOOL lsa_open_policy2( const char *server_name, POLICY_HND *hnd,
if (hnd == NULL) return False;
- prs_init(&buf , 1024, 4, SAFETY_MARGIN, False);
+ prs_init(&buf , 0, 4, SAFETY_MARGIN, False);
prs_init(&rbuf, 0 , 4, SAFETY_MARGIN, True );
/* create and send a MSRPC command with api LSA_OPENPOLICY2 */
@@ -371,7 +365,7 @@ BOOL lsa_open_secret( const POLICY_HND *hnd,
if (hnd == NULL) return False;
- prs_init(&buf , 1024, 4, SAFETY_MARGIN, False);
+ prs_init(&buf , 0, 4, SAFETY_MARGIN, False);
prs_init(&rbuf, 0 , 4, SAFETY_MARGIN, True );
/* create and send a MSRPC command with api LSA_OPENSECRET */
@@ -426,7 +420,7 @@ BOOL lsa_query_secret(POLICY_HND *hnd, STRING2 *secret,
if (hnd == NULL) return False;
- prs_init(&buf , 1024, 4, SAFETY_MARGIN, False);
+ prs_init(&buf , 0, 4, SAFETY_MARGIN, False);
prs_init(&rbuf, 0 , 4, SAFETY_MARGIN, True );
/* create and send a MSRPC command with api LSA_QUERYSECRET */
@@ -498,7 +492,7 @@ BOOL lsa_lookup_names( POLICY_HND *hnd,
if (hnd == NULL || num_sids == 0 || sids == NULL) return False;
- prs_init(&buf , 1024, 4, SAFETY_MARGIN, False);
+ prs_init(&buf , 0, 4, SAFETY_MARGIN, False);
prs_init(&rbuf, 0 , 4, SAFETY_MARGIN, True );
/* create and send a MSRPC command with api LSA_LOOKUP_NAMES */
@@ -644,7 +638,7 @@ BOOL lsa_lookup_sids(POLICY_HND *hnd,
*names = NULL;
}
- prs_init(&buf , 1024, 4, SAFETY_MARGIN, False);
+ prs_init(&buf , 0, 4, SAFETY_MARGIN, False);
prs_init(&rbuf, 0 , 4, SAFETY_MARGIN, True );
/* create and send a MSRPC command with api LSA_LOOKUP_SIDS */
@@ -777,7 +771,7 @@ BOOL lsa_query_info_pol(POLICY_HND *hnd, uint16 info_class,
if (hnd == NULL || domain_name == NULL || domain_sid == NULL) return False;
- prs_init(&buf , 1024, 4, SAFETY_MARGIN, False);
+ prs_init(&buf , 0, 4, SAFETY_MARGIN, False);
prs_init(&rbuf, 0 , 4, SAFETY_MARGIN, True );
/* create and send a MSRPC command with api LSA_QUERYINFOPOLICY */
@@ -883,7 +877,7 @@ BOOL lsa_enum_trust_dom(POLICY_HND *hnd, uint32 *enum_ctx,
if (hnd == NULL || num_doms == NULL || names == NULL) return False;
- prs_init(&buf , 1024, 4, SAFETY_MARGIN, False);
+ prs_init(&buf , 0, 4, SAFETY_MARGIN, False);
prs_init(&rbuf, 0 , 4, SAFETY_MARGIN, True );
/* create and send a MSRPC command with api LSA_ENUMTRUSTDOM */
@@ -959,7 +953,7 @@ BOOL lsa_close(POLICY_HND *hnd)
/* create and send a MSRPC command with api LSA_OPENPOLICY */
- prs_init(&buf , 1024, 4, SAFETY_MARGIN, False);
+ prs_init(&buf , 0, 4, SAFETY_MARGIN, False);
prs_init(&rbuf, 0 , 4, SAFETY_MARGIN, True );
DEBUG(4,("LSA Close\n"));
diff --git a/source/rpc_client/cli_pipe.c b/source/rpc_client/cli_pipe.c
index 34b77366b57..f7c2312250d 100644
--- a/source/rpc_client/cli_pipe.c
+++ b/source/rpc_client/cli_pipe.c
@@ -165,7 +165,7 @@ static BOOL rpc_auth_pipe(struct ntdom_info *nt, prs_struct *rdata,
RPC_AUTH_NTLMSSP_CHK chk;
uint32 crc32;
int data_len = len - 0x18 - auth_len - 8;
- char *reply_data = mem_data(&rdata->data, 0x18);
+ char *reply_data = mem_data(rdata->data, 0x18);
BOOL auth_verify = IS_BITS_SET_ALL(nt->ntlmssp_srv_flgs, NTLMSSP_NEGOTIATE_SIGN);
BOOL auth_seal = IS_BITS_SET_ALL(nt->ntlmssp_srv_flgs, NTLMSSP_NEGOTIATE_SEAL);
@@ -187,7 +187,7 @@ static BOOL rpc_auth_pipe(struct ntdom_info *nt, prs_struct *rdata,
{
RPC_HDR_AUTH rhdr_auth;
prs_struct auth_req;
- char *data = mem_data(&rdata->data, len - auth_len - 8);
+ char *data = mem_data(rdata->data, len - auth_len - 8);
prs_init(&auth_req , 0x08, 4, 0, True);
memcpy(auth_req.data->data, data, 8);
smb_io_rpc_hdr_auth("hdr_auth", &rhdr_auth, &auth_req, 0);
@@ -202,7 +202,7 @@ static BOOL rpc_auth_pipe(struct ntdom_info *nt, prs_struct *rdata,
if (auth_verify)
{
prs_struct auth_verf;
- char *data = mem_data(&rdata->data, len - auth_len);
+ char *data = mem_data(rdata->data, len - auth_len);
if (data == NULL) return False;
DEBUG(10,("rpc_auth_pipe: verify\n"));
@@ -295,7 +295,7 @@ static BOOL create_request_pdu(struct cli_connection *con,
BOOL auth_verify;
BOOL auth_seal;
uint32 crc32 = 0;
- char *d = mem_data(&data->data, data_start);
+ char *d = mem_data(data->data, data_start);
struct ntdom_info *nt = cli_conn_get_ntinfo(con);
uint8 flags = 0;
@@ -355,7 +355,7 @@ static BOOL create_request_pdu(struct cli_connection *con,
make_rpc_auth_ntlmssp_chk(&chk, NTLMSSP_SIGN_VERSION, crc32, nt->ntlmssp_seq_num++);
smb_io_rpc_auth_ntlmssp_chk("auth_sign", &chk, &auth_verf, 0);
- NTLMSSPcalc_ap(nt, (uchar*)mem_data(&auth_verf.data, 4), 12);
+ NTLMSSPcalc_ap(nt, (uchar*)mem_data(auth_verf.data, 4), 12);
}
if (auth_seal || auth_verify)
@@ -385,7 +385,7 @@ static BOOL create_request_pdu(struct cli_connection *con,
}
/* this is all a hack */
- prs_init(dataa, data_len, 4, SAFETY_MARGIN, False);
+ prs_init(dataa, data_len, 4, 0, False);
mem_buf_copy(dataa->data->data, hdr.data, 0, data_len);
prs_mem_free(&hdr_auth );
@@ -451,7 +451,7 @@ BOOL rpc_api_pipe_bind(struct cli_connection *con, prs_struct *data, prs_struct
}
{
- char *d = mem_data(&rpdu.data, rpdu.offset);
+ char *d = mem_data(rpdu.data, rpdu.offset);
int l = rhdr.frag_len - rpdu.offset;
prs_append_data(rdata, d, l);
prs_mem_free(&rpdu);
@@ -494,16 +494,13 @@ BOOL rpc_api_pipe_req(struct cli_connection *con, uint8 opnum,
prs_init(&rpdu, 0, 4, 0, True);
- while (data_end != data->offset)
+ do
{
prs_struct data_t;
DEBUG(10,("rpc_api_pipe_req: start: %d end: %d off: %d\n",
data_start, data_end, data->offset));
- prs_mem_free(&rpdu);
- prs_init(&rpdu, 0, 4, 0, True);
-
if (!create_request_pdu(con, opnum, data, data_start,
&data_end, &data_t))
{
@@ -518,7 +515,14 @@ BOOL rpc_api_pipe_req(struct cli_connection *con, uint8 opnum,
return False;
}
prs_mem_free(&data_t);
- }
+
+ if (data_end != data->offset)
+ {
+ prs_mem_free(&rpdu);
+ prs_init(&rpdu, 0, 4, 0, True);
+ }
+
+ } while (data_end != data->offset);
/**** parse the header: check it's a response record */
@@ -554,7 +558,7 @@ BOOL rpc_api_pipe_req(struct cli_connection *con, uint8 opnum,
}
{
- char *d = mem_data(&rpdu.data, rpdu.offset);
+ char *d = mem_data(rpdu.data, rpdu.offset);
int l = rhdr.frag_len - rpdu.offset;
prs_append_data(rdata, d, l);
prs_mem_free(&rpdu);
@@ -612,7 +616,7 @@ BOOL rpc_api_pipe_req(struct cli_connection *con, uint8 opnum,
}
{
- char *d = mem_data(&rpdu.data, rpdu.offset);
+ char *d = mem_data(rpdu.data, rpdu.offset);
int l = rhdr.frag_len - rpdu.offset;
prs_append_data(rdata, d, l);
prs_mem_free(&rpdu);
@@ -663,7 +667,7 @@ static BOOL cli_send_trans_data(struct cli_state *cli, uint16 fnum,
/*
* Setup the pointers from the incoming.
*/
- char *pdata = mem_data(&data->data, data_offset);
+ char *pdata = mem_data(data->data, data_offset);
int data_len = data ? (data->data->data_used - data_offset) : 0;
data_len = MIN(max_data_len, data_len);
@@ -1255,12 +1259,12 @@ BOOL rpc_pipe_bind(struct cli_connection *con,
if (!valid_pipe_name(pipe_name, abstract, transfer)) return False;
prs_init(&hdr , 0x10 , 4, 0x0 , False);
- prs_init(&hdr_rb , 1024 , 4, SAFETY_MARGIN, False);
- prs_init(&hdr_auth , (ntlmssp_auth ? 8 : 0), 4, SAFETY_MARGIN, False);
- prs_init(&auth_req , (ntlmssp_auth ? 1024 : 0), 4, SAFETY_MARGIN, False);
- prs_init(&auth_ntlm, (ntlmssp_auth ? 1024 : 0), 4, SAFETY_MARGIN, False);
+ prs_init(&hdr_rb , 1024 , 4, 0, False);
+ prs_init(&hdr_auth , (ntlmssp_auth ? 8 : 0), 4, 0, False);
+ prs_init(&auth_req , (ntlmssp_auth ? 1024 : 0), 4, 0, False);
+ prs_init(&auth_ntlm, (ntlmssp_auth ? 1024 : 0), 4, 0, False);
- prs_init(&rdata , 0 , 4, SAFETY_MARGIN, True);
+ prs_init(&rdata , 0 , 4, 0, True);
rpc_call_id = get_rpc_call_id();
create_rpc_bind_req(&hdr, &hdr_rb,
@@ -1331,8 +1335,8 @@ BOOL rpc_pipe_bind(struct cli_connection *con,
nt->ntlmssp_cli_flgs = rhdr_chal.neg_flags;
prs_init(&hdra , 0x10, 4, 0x0 , False);
- prs_init(&hdr_autha, 1024, 4, SAFETY_MARGIN, False);
- prs_init(&auth_resp, 1024, 4, SAFETY_MARGIN, False);
+ prs_init(&hdr_autha, 1024, 4, 0, False);
+ prs_init(&auth_resp, 1024, 4, 0, False);
pwd_make_lm_nt_owf(&usr->pwd, rhdr_chal.challenge);
diff --git a/source/rpc_client/cli_reg.c b/source/rpc_client/cli_reg.c
index 4f1c28a7015..5d8567763e7 100644
--- a/source/rpc_client/cli_reg.c
+++ b/source/rpc_client/cli_reg.c
@@ -127,8 +127,8 @@ BOOL reg_open_hkcr( struct cli_connection *con,
if (hnd == NULL) return False;
- prs_init(&buf , 1024, 4, SAFETY_MARGIN, False);
- prs_init(&rbuf, 0 , 4, SAFETY_MARGIN, True );
+ prs_init(&buf , 0, 4, SAFETY_MARGIN, False);
+ prs_init(&rbuf, 0, 4, SAFETY_MARGIN, True );
/* create and send a MSRPC command with api REG_OPEN_HKCR */
@@ -185,8 +185,8 @@ BOOL reg_open_hklm( struct cli_connection *con,
if (hnd == NULL) return False;
- prs_init(&buf , 1024, 4, SAFETY_MARGIN, False);
- prs_init(&rbuf, 0 , 4, SAFETY_MARGIN, True );
+ prs_init(&buf , 0, 4, SAFETY_MARGIN, False);
+ prs_init(&rbuf, 0, 4, SAFETY_MARGIN, True );
/* create and send a MSRPC command with api REG_OPEN_HKLM */
@@ -243,8 +243,8 @@ BOOL reg_open_hku( struct cli_connection *con,
if (hnd == NULL) return False;
- prs_init(&buf , 1024, 4, SAFETY_MARGIN, False);
- prs_init(&rbuf, 0 , 4, SAFETY_MARGIN, True );
+ prs_init(&buf , 0, 4, SAFETY_MARGIN, False);
+ prs_init(&rbuf, 0, 4, SAFETY_MARGIN, True );
/* create and send a MSRPC command with api REG_OPEN_HKU */
@@ -301,8 +301,8 @@ BOOL reg_flush_key( POLICY_HND *hnd)
if (hnd == NULL) return False;
- prs_init(&buf , 1024, 4, SAFETY_MARGIN, False);
- prs_init(&rbuf, 0 , 4, SAFETY_MARGIN, True );
+ prs_init(&buf , 0, 4, SAFETY_MARGIN, False);
+ prs_init(&rbuf, 0, 4, SAFETY_MARGIN, True );
/* create and send a MSRPC command with api REG_FLUSH_KEY */
@@ -360,8 +360,8 @@ BOOL reg_query_key( POLICY_HND *hnd,
if (hnd == NULL) return False;
- prs_init(&buf , 1024, 4, SAFETY_MARGIN, False);
- prs_init(&rbuf, 0 , 4, SAFETY_MARGIN, True );
+ prs_init(&buf , 0, 4, SAFETY_MARGIN, False);
+ prs_init(&rbuf, 0, 4, SAFETY_MARGIN, True );
/* create and send a MSRPC command with api REG_QUERY_KEY */
@@ -425,8 +425,8 @@ BOOL reg_unknown_1a( POLICY_HND *hnd, uint32 *unk)
if (hnd == NULL) return False;
- prs_init(&buf , 1024, 4, SAFETY_MARGIN, False);
- prs_init(&rbuf, 0 , 4, SAFETY_MARGIN, True );
+ prs_init(&buf , 0, 4, SAFETY_MARGIN, False);
+ prs_init(&rbuf, 0, 4, SAFETY_MARGIN, True );
/* create and send a MSRPC command with api REG_UNKNOWN_1A */
@@ -482,8 +482,8 @@ BOOL reg_query_info( POLICY_HND *hnd,
if (hnd == NULL) return False;
- prs_init(&buf , 1024, 4, SAFETY_MARGIN, False);
- prs_init(&rbuf, 0 , 4, SAFETY_MARGIN, True );
+ prs_init(&buf , 0, 4, SAFETY_MARGIN, False);
+ prs_init(&rbuf, 0, 4, SAFETY_MARGIN, True );
/* create and send a MSRPC command with api REG_INFO */
@@ -541,8 +541,8 @@ BOOL reg_set_key_sec( POLICY_HND *hnd,
if (hnd == NULL) return False;
- prs_init(&buf , 1024, 4, SAFETY_MARGIN, False);
- prs_init(&rbuf, 0 , 4, SAFETY_MARGIN, True );
+ prs_init(&buf , 0, 4, SAFETY_MARGIN, False);
+ prs_init(&rbuf, 0, 4, SAFETY_MARGIN, True );
/* create and send a MSRPC command with api REG_SET_KEY_SEC */
@@ -591,8 +591,8 @@ BOOL reg_get_key_sec( POLICY_HND *hnd,
if (hnd == NULL) return False;
- prs_init(&buf , 1024, 4, SAFETY_MARGIN, False);
- prs_init(&rbuf, 0 , 4, SAFETY_MARGIN, True );
+ prs_init(&buf , 0, 4, SAFETY_MARGIN, False);
+ prs_init(&rbuf, 0, 4, SAFETY_MARGIN, True );
/* create and send a MSRPC command with api REG_GET_KEY_SEC */
@@ -659,8 +659,8 @@ BOOL reg_delete_val( POLICY_HND *hnd, char *val_name)
if (hnd == NULL) return False;
- prs_init(&buf , 1024, 4, SAFETY_MARGIN, False);
- prs_init(&rbuf, 0 , 4, SAFETY_MARGIN, True );
+ prs_init(&buf , 0, 4, SAFETY_MARGIN, False);
+ prs_init(&rbuf, 0, 4, SAFETY_MARGIN, True );
/* create and send a MSRPC command with api REG_DELETE_VALUE */
@@ -713,8 +713,8 @@ BOOL reg_delete_key( POLICY_HND *hnd, char *key_name)
if (hnd == NULL) return False;
- prs_init(&buf , 1024, 4, SAFETY_MARGIN, False);
- prs_init(&rbuf, 0 , 4, SAFETY_MARGIN, True );
+ prs_init(&buf , 0, 4, SAFETY_MARGIN, False);
+ prs_init(&rbuf, 0, 4, SAFETY_MARGIN, True );
/* create and send a MSRPC command with api REG_DELETE_KEY */
@@ -777,8 +777,8 @@ BOOL reg_create_key( POLICY_HND *hnd,
if (hnd == NULL) return False;
- prs_init(&buf , 1024, 4, SAFETY_MARGIN, False);
- prs_init(&rbuf, 0 , 4, SAFETY_MARGIN, True );
+ prs_init(&buf , 0, 4, SAFETY_MARGIN, False);
+ prs_init(&rbuf, 0, 4, SAFETY_MARGIN, True );
/* create and send a MSRPC command with api REG_CREATE_KEY */
@@ -844,8 +844,8 @@ BOOL reg_enum_key( POLICY_HND *hnd,
if (hnd == NULL) return False;
- prs_init(&buf , 1024, 4, SAFETY_MARGIN, False);
- prs_init(&rbuf, 0 , 4, SAFETY_MARGIN, True );
+ prs_init(&buf , 0, 4, SAFETY_MARGIN, False);
+ prs_init(&rbuf, 0, 4, SAFETY_MARGIN, True );
/* create and send a MSRPC command with api REG_ENUM_KEY */
@@ -904,8 +904,8 @@ BOOL reg_create_val( POLICY_HND *hnd,
if (hnd == NULL) return False;
- prs_init(&buf , 1024, 4, SAFETY_MARGIN, False);
- prs_init(&rbuf, 0 , 4, SAFETY_MARGIN, True );
+ prs_init(&buf , 0, 4, SAFETY_MARGIN, False);
+ prs_init(&rbuf, 0, 4, SAFETY_MARGIN, True );
/* create and send a MSRPC command with api REG_CREATE_VALUE */
@@ -961,8 +961,8 @@ BOOL reg_enum_val( POLICY_HND *hnd,
if (hnd == NULL) return False;
- prs_init(&buf , 1024, 4, SAFETY_MARGIN, False);
- prs_init(&rbuf, 0 , 4, SAFETY_MARGIN, True );
+ prs_init(&buf , 0, 4, SAFETY_MARGIN, False);
+ prs_init(&rbuf, 0, 4, SAFETY_MARGIN, True );
/* create and send a MSRPC command with api REG_ENUM_VALUE */
@@ -1020,8 +1020,8 @@ BOOL reg_open_entry( POLICY_HND *hnd,
if (hnd == NULL) return False;
- prs_init(&buf , 1024, 4, SAFETY_MARGIN, False);
- prs_init(&rbuf, 0 , 4, SAFETY_MARGIN, True );
+ prs_init(&buf , 0, 4, SAFETY_MARGIN, False);
+ prs_init(&rbuf, 0, 4, SAFETY_MARGIN, True );
/* create and send a MSRPC command with api REG_OPEN_ENTRY */
@@ -1084,8 +1084,8 @@ BOOL reg_close( POLICY_HND *hnd)
/* create and send a MSRPC command with api REG_CLOSE */
- prs_init(&buf , 1024, 4, SAFETY_MARGIN, False);
- prs_init(&rbuf, 0 , 4, SAFETY_MARGIN, True );
+ prs_init(&buf , 0, 4, SAFETY_MARGIN, False);
+ prs_init(&rbuf, 0, 4, SAFETY_MARGIN, True );
DEBUG(4,("REG Close\n"));
@@ -1162,8 +1162,8 @@ BOOL reg_shutdown(const char *srv_name,
if (msg == NULL) return False;
- prs_init(&buf , 1024, 4, SAFETY_MARGIN, False);
- prs_init(&rbuf, 0 , 4, SAFETY_MARGIN, True );
+ prs_init(&buf , 0, 4, SAFETY_MARGIN, False);
+ prs_init(&rbuf, 0, 4, SAFETY_MARGIN, True );
/* create and send a MSRPC command with api REG_SHUTDOWN */
diff --git a/source/rpc_client/cli_samr.c b/source/rpc_client/cli_samr.c
index 9a68016c666..266f2f0fd4a 100644
--- a/source/rpc_client/cli_samr.c
+++ b/source/rpc_client/cli_samr.c
@@ -47,8 +47,8 @@ BOOL samr_chgpasswd_user( struct cli_connection *con,
/* create and send a MSRPC command with api SAMR_CHGPASSWD_USER */
- prs_init(&data , 1024, 4, SAFETY_MARGIN, False);
- prs_init(&rdata, 0 , 4, SAFETY_MARGIN, True );
+ prs_init(&data , 0, 4, SAFETY_MARGIN, False);
+ prs_init(&rdata, 0, 4, SAFETY_MARGIN, True );
DEBUG(4,("SAMR Change User Password. server:%s username:%s\n",
srv_name, user_name));
@@ -104,8 +104,8 @@ BOOL samr_unknown_38(struct cli_connection *con, char *srv_name)
/* create and send a MSRPC command with api SAMR_ENUM_DOM_USERS */
- prs_init(&data , 1024, 4, SAFETY_MARGIN, False);
- prs_init(&rdata, 0 , 4, SAFETY_MARGIN, True );
+ prs_init(&data , 0, 4, SAFETY_MARGIN, False);
+ prs_init(&rdata, 0, 4, SAFETY_MARGIN, True );
DEBUG(4,("SAMR Unknown 38 server:%s\n", srv_name));
@@ -161,8 +161,8 @@ BOOL samr_query_dom_info( POLICY_HND *domain_pol, uint16 switch_value,
/* create and send a MSRPC command with api SAMR_ENUM_DOM_USERS */
- prs_init(&data , 1024, 4, SAFETY_MARGIN, False);
- prs_init(&rdata, 0 , 4, SAFETY_MARGIN, True );
+ prs_init(&data , 0, 4, SAFETY_MARGIN, False);
+ prs_init(&rdata, 0, 4, SAFETY_MARGIN, True );
/* store the parameters */
make_samr_q_query_dom_info(&q_e, domain_pol, switch_value);
@@ -222,8 +222,8 @@ uint32 samr_enum_domains( POLICY_HND *pol,
/* create and send a MSRPC command with api SAMR_ENUM_DOMAINS */
- prs_init(&data , 1024, 4, SAFETY_MARGIN, False);
- prs_init(&rdata, 0 , 4, SAFETY_MARGIN, True );
+ prs_init(&data , 0, 4, SAFETY_MARGIN, False);
+ prs_init(&rdata, 0, 4, SAFETY_MARGIN, True );
/* store the parameters */
make_samr_q_enum_domains(&q_e, pol, *start_idx, size);
@@ -323,8 +323,8 @@ uint32 samr_enum_dom_groups( POLICY_HND *pol,
/* create and send a MSRPC command with api SAMR_ENUM_DOM_GROUPS */
- prs_init(&data , 1024, 4, SAFETY_MARGIN, False);
- prs_init(&rdata, 0 , 4, SAFETY_MARGIN, True );
+ prs_init(&data , 0, 4, SAFETY_MARGIN, False);
+ prs_init(&rdata, 0, 4, SAFETY_MARGIN, True );
/* store the parameters */
make_samr_q_enum_dom_groups(&q_e, pol, *start_idx, size);
@@ -424,8 +424,8 @@ uint32 samr_enum_dom_aliases( POLICY_HND *pol,
/* create and send a MSRPC command with api SAMR_ENUM_DOM_ALIASES */
- prs_init(&data , 1024, 4, SAFETY_MARGIN, False);
- prs_init(&rdata, 0 , 4, SAFETY_MARGIN, True );
+ prs_init(&data , 0, 4, SAFETY_MARGIN, False);
+ prs_init(&rdata, 0, 4, SAFETY_MARGIN, True );
/* store the parameters */
make_samr_q_enum_dom_aliases(&q_e, pol, *start_idx, size);
@@ -524,8 +524,8 @@ uint32 samr_enum_dom_users( POLICY_HND *pol, uint32 *start_idx,
/* create and send a MSRPC command with api SAMR_ENUM_DOM_USERS */
- prs_init(&data , 1024, 4, SAFETY_MARGIN, False);
- prs_init(&rdata, 0 , 4, SAFETY_MARGIN, True );
+ prs_init(&data , 0, 4, SAFETY_MARGIN, False);
+ prs_init(&rdata, 0, 4, SAFETY_MARGIN, True );
/* store the parameters */
make_samr_q_enum_dom_users(&q_e, pol, *start_idx,
@@ -634,8 +634,8 @@ BOOL samr_connect( const char *srv_name, uint32 unknown_0,
/* create and send a MSRPC command with api SAMR_CONNECT */
- prs_init(&data , 1024, 4, SAFETY_MARGIN, False);
- prs_init(&rdata, 0 , 4, SAFETY_MARGIN, True );
+ prs_init(&data , 0, 4, SAFETY_MARGIN, False);
+ prs_init(&rdata, 0, 4, SAFETY_MARGIN, True );
/* store the parameters */
make_samr_q_connect(&q_o, srv_name, unknown_0);
@@ -694,8 +694,8 @@ BOOL samr_open_user( const POLICY_HND *pol,
/* create and send a MSRPC command with api SAMR_OPEN_USER */
- prs_init(&data , 1024, 4, SAFETY_MARGIN, False);
- prs_init(&rdata, 0 , 4, SAFETY_MARGIN, True );
+ prs_init(&data , 0, 4, SAFETY_MARGIN, False);
+ prs_init(&rdata, 0, 4, SAFETY_MARGIN, True );
/* store the parameters */
make_samr_q_open_user(&q_o, pol, unk_0, rid);
@@ -751,8 +751,8 @@ BOOL samr_open_alias( const POLICY_HND *domain_pol,
/* create and send a MSRPC command with api SAMR_OPEN_ALIAS */
- prs_init(&data , 1024, 4, SAFETY_MARGIN, False);
- prs_init(&rdata, 0 , 4, SAFETY_MARGIN, True );
+ prs_init(&data , 0, 4, SAFETY_MARGIN, False);
+ prs_init(&rdata, 0, 4, SAFETY_MARGIN, True );
/* store the parameters */
make_samr_q_open_alias(&q_o, domain_pol, flags, rid);
@@ -804,8 +804,8 @@ BOOL samr_del_aliasmem( POLICY_HND *alias_pol, DOM_SID *sid)
/* create and send a MSRPC command with api SAMR_DEL_ALIASMEM */
- prs_init(&data , 1024, 4, SAFETY_MARGIN, False);
- prs_init(&rdata, 0 , 4, SAFETY_MARGIN, True );
+ prs_init(&data , 0, 4, SAFETY_MARGIN, False);
+ prs_init(&rdata, 0, 4, SAFETY_MARGIN, True );
DEBUG(4,("SAMR Delete Alias Member.\n"));
@@ -858,8 +858,8 @@ BOOL samr_add_aliasmem( POLICY_HND *alias_pol, DOM_SID *sid)
/* create and send a MSRPC command with api SAMR_ADD_ALIASMEM */
- prs_init(&data , 1024, 4, SAFETY_MARGIN, False);
- prs_init(&rdata, 0 , 4, SAFETY_MARGIN, True );
+ prs_init(&data , 0, 4, SAFETY_MARGIN, False);
+ prs_init(&rdata, 0, 4, SAFETY_MARGIN, True );
DEBUG(4,("SAMR Add Alias Member.\n"));
@@ -912,8 +912,8 @@ BOOL samr_delete_dom_alias( POLICY_HND *alias_pol)
/* delete and send a MSRPC command with api SAMR_DELETE_DOM_ALIAS */
- prs_init(&data , 1024, 4, SAFETY_MARGIN, False);
- prs_init(&rdata, 0 , 4, SAFETY_MARGIN, True );
+ prs_init(&data , 0, 4, SAFETY_MARGIN, False);
+ prs_init(&rdata, 0, 4, SAFETY_MARGIN, True );
DEBUG(4,("SAMR Delete Domain Alias.\n"));
@@ -968,8 +968,8 @@ uint32 samr_create_dom_user( POLICY_HND *domain_pol, const char *acct_name,
/* create and send a MSRPC command with api SAMR_CREATE_USER */
- prs_init(&data , 1024, 4, SAFETY_MARGIN, False);
- prs_init(&rdata, 0 , 4, SAFETY_MARGIN, True );
+ prs_init(&data , 0, 4, SAFETY_MARGIN, False);
+ prs_init(&rdata, 0, 4, SAFETY_MARGIN, True );
DEBUG(4,("SAMR Create Domain User. Name:%s\n", acct_name));
@@ -1029,8 +1029,8 @@ BOOL samr_create_dom_alias( POLICY_HND *domain_pol, const char *acct_name,
/* create and send a MSRPC command with api SAMR_CREATE_DOM_ALIAS */
- prs_init(&data , 1024, 4, SAFETY_MARGIN, False);
- prs_init(&rdata, 0 , 4, SAFETY_MARGIN, True );
+ prs_init(&data , 0, 4, SAFETY_MARGIN, False);
+ prs_init(&rdata, 0, 4, SAFETY_MARGIN, True );
DEBUG(4,("SAMR Create Domain Alias. Name:%s\n", acct_name));
@@ -1086,8 +1086,8 @@ BOOL samr_query_aliasinfo( POLICY_HND *alias_pol, uint16 switch_value,
/* create and send a MSRPC command with api SAMR_GET_ALIASINFO */
- prs_init(&data , 1024, 4, SAFETY_MARGIN, False);
- prs_init(&rdata, 0 , 4, SAFETY_MARGIN, True );
+ prs_init(&data , 0, 4, SAFETY_MARGIN, False);
+ prs_init(&rdata, 0, 4, SAFETY_MARGIN, True );
DEBUG(4,("SAMR Get Alias Info\n"));
@@ -1143,8 +1143,8 @@ BOOL samr_set_aliasinfo( POLICY_HND *alias_pol, ALIAS_INFO_CTR *ctr)
/* create and send a MSRPC command with api SAMR_SET_ALIASINFO */
- prs_init(&data , 1024, 4, SAFETY_MARGIN, False);
- prs_init(&rdata, 0 , 4, SAFETY_MARGIN, True );
+ prs_init(&data , 0, 4, SAFETY_MARGIN, False);
+ prs_init(&rdata, 0, 4, SAFETY_MARGIN, True );
DEBUG(4,("SAMR Set Alias Info\n"));
@@ -1201,8 +1201,8 @@ BOOL samr_open_group( const POLICY_HND *domain_pol,
/* create and send a MSRPC command with api SAMR_OPEN_GROUP */
- prs_init(&data , 1024, 4, SAFETY_MARGIN, False);
- prs_init(&rdata, 0 , 4, SAFETY_MARGIN, True );
+ prs_init(&data , 0, 4, SAFETY_MARGIN, False);
+ prs_init(&rdata, 0, 4, SAFETY_MARGIN, True );
/* store the parameters */
make_samr_q_open_group(&q_o, domain_pol, flags, rid);
@@ -1254,8 +1254,8 @@ BOOL samr_del_groupmem( POLICY_HND *group_pol, uint32 rid)
/* create and send a MSRPC command with api SAMR_DEL_GROUPMEM */
- prs_init(&data , 1024, 4, SAFETY_MARGIN, False);
- prs_init(&rdata, 0 , 4, SAFETY_MARGIN, True );
+ prs_init(&data , 0, 4, SAFETY_MARGIN, False);
+ prs_init(&rdata, 0, 4, SAFETY_MARGIN, True );
DEBUG(4,("SAMR Delete Group Member.\n"));
@@ -1308,8 +1308,8 @@ BOOL samr_add_groupmem( POLICY_HND *group_pol, uint32 rid)
/* create and send a MSRPC command with api SAMR_ADD_GROUPMEM */
- prs_init(&data , 1024, 4, SAFETY_MARGIN, False);
- prs_init(&rdata, 0 , 4, SAFETY_MARGIN, True );
+ prs_init(&data , 0, 4, SAFETY_MARGIN, False);
+ prs_init(&rdata, 0, 4, SAFETY_MARGIN, True );
DEBUG(4,("SAMR Add Group Member.\n"));
@@ -1362,8 +1362,8 @@ BOOL samr_delete_dom_group( POLICY_HND *group_pol)
/* delete and send a MSRPC command with api SAMR_DELETE_DOM_GROUP */
- prs_init(&data , 1024, 4, SAFETY_MARGIN, False);
- prs_init(&rdata, 0 , 4, SAFETY_MARGIN, True );
+ prs_init(&data , 0, 4, SAFETY_MARGIN, False);
+ prs_init(&rdata, 0, 4, SAFETY_MARGIN, True );
DEBUG(4,("SAMR Delete Domain Group.\n"));
@@ -1417,8 +1417,8 @@ BOOL samr_create_dom_group( POLICY_HND *domain_pol, const char *acct_name,
/* create and send a MSRPC command with api SAMR_CREATE_DOM_GROUP */
- prs_init(&data , 1024, 4, SAFETY_MARGIN, False);
- prs_init(&rdata, 0 , 4, SAFETY_MARGIN, True );
+ prs_init(&data , 0, 4, SAFETY_MARGIN, False);
+ prs_init(&rdata, 0, 4, SAFETY_MARGIN, True );
DEBUG(4,("SAMR Create Domain Group. Name:%s\n", acct_name));
@@ -1473,8 +1473,8 @@ BOOL samr_set_groupinfo( POLICY_HND *group_pol, GROUP_INFO_CTR *ctr)
/* create and send a MSRPC command with api SAMR_SET_GROUPINFO */
- prs_init(&data , 1024, 4, SAFETY_MARGIN, False);
- prs_init(&rdata, 0 , 4, SAFETY_MARGIN, True );
+ prs_init(&data , 0, 4, SAFETY_MARGIN, False);
+ prs_init(&rdata, 0, 4, SAFETY_MARGIN, True );
DEBUG(4,("SAMR Set Group Info\n"));
@@ -1538,8 +1538,8 @@ BOOL samr_open_domain( const POLICY_HND *connect_pol,
/* create and send a MSRPC command with api SAMR_OPEN_DOMAIN */
- prs_init(&data , 1024, 4, SAFETY_MARGIN, False);
- prs_init(&rdata, 0 , 4, SAFETY_MARGIN, True );
+ prs_init(&data , 0, 4, SAFETY_MARGIN, False);
+ prs_init(&rdata, 0, 4, SAFETY_MARGIN, True );
/* store the parameters */
make_samr_q_open_domain(&q_o, connect_pol, ace_perms, sid);
@@ -1592,8 +1592,8 @@ BOOL samr_query_lookup_domain( POLICY_HND *pol, const char *dom_name,
/* create and send a MSRPC command with api SAMR_LOOKUP_DOMAIN */
- prs_init(&data , 1024, 4, SAFETY_MARGIN, False);
- prs_init(&rdata, 0 , 4, SAFETY_MARGIN, True );
+ prs_init(&data , 0, 4, SAFETY_MARGIN, False);
+ prs_init(&rdata, 0, 4, SAFETY_MARGIN, True );
DEBUG(4,("SAMR Query Lookup Domain.\n"));
@@ -1652,8 +1652,8 @@ BOOL samr_query_lookup_names( POLICY_HND *pol, uint32 flags,
/* create and send a MSRPC command with api SAMR_LOOKUP_NAMES */
- prs_init(&data , 1024, 4, SAFETY_MARGIN, False);
- prs_init(&rdata, 0 , 4, SAFETY_MARGIN, True );
+ prs_init(&data , 0, 4, SAFETY_MARGIN, False);
+ prs_init(&rdata, 0, 4, SAFETY_MARGIN, True );
DEBUG(4,("SAMR Query Lookup NAMES.\n"));
@@ -1736,8 +1736,8 @@ BOOL samr_query_lookup_rids( const POLICY_HND *pol, uint32 flags,
/* create and send a MSRPC command with api SAMR_LOOKUP_RIDS */
- prs_init(&data , 1024, 4, SAFETY_MARGIN, False);
- prs_init(&rdata, 0 , 4, SAFETY_MARGIN, True );
+ prs_init(&data , 0, 4, SAFETY_MARGIN, False);
+ prs_init(&rdata, 0, 4, SAFETY_MARGIN, True );
DEBUG(4,("SAMR Query Lookup RIDs.\n"));
@@ -1832,8 +1832,8 @@ BOOL samr_query_aliasmem( const POLICY_HND *alias_pol,
/* create and send a MSRPC command with api SAMR_QUERY_ALIASMEM */
- prs_init(&data , 1024, 4, SAFETY_MARGIN, False);
- prs_init(&rdata, 0 , 4, SAFETY_MARGIN, True );
+ prs_init(&data , 0, 4, SAFETY_MARGIN, False);
+ prs_init(&rdata, 0, 4, SAFETY_MARGIN, True );
/* store the parameters */
make_samr_q_query_aliasmem(&q_o, alias_pol);
@@ -1894,8 +1894,8 @@ BOOL samr_query_useraliases( const POLICY_HND *pol,
/* create and send a MSRPC command with api SAMR_QUERY_USERALIASES */
- prs_init(&data , 1024, 4, SAFETY_MARGIN, False);
- prs_init(&rdata, 0 , 4, SAFETY_MARGIN, True );
+ prs_init(&data , 0, 4, SAFETY_MARGIN, False);
+ prs_init(&rdata, 0, 4, SAFETY_MARGIN, True );
/* store the parameters */
make_samr_q_query_useraliases(&q_o, pol, ptr_sid, sid);
@@ -1954,8 +1954,8 @@ BOOL samr_query_groupmem( POLICY_HND *group_pol,
/* create and send a MSRPC command with api SAMR_QUERY_GROUPMEM */
- prs_init(&data , 1024, 4, SAFETY_MARGIN, False);
- prs_init(&rdata, 0 , 4, SAFETY_MARGIN, True );
+ prs_init(&data , 0, 4, SAFETY_MARGIN, False);
+ prs_init(&rdata, 0, 4, SAFETY_MARGIN, True );
/* store the parameters */
make_samr_q_query_groupmem(&q_o, group_pol);
@@ -2018,8 +2018,8 @@ BOOL samr_query_usergroups( POLICY_HND *pol, uint32 *num_groups,
/* create and send a MSRPC command with api SAMR_QUERY_USERGROUPS */
- prs_init(&data , 1024, 4, SAFETY_MARGIN, False);
- prs_init(&rdata, 0 , 4, SAFETY_MARGIN, True );
+ prs_init(&data , 0, 4, SAFETY_MARGIN, False);
+ prs_init(&rdata, 0, 4, SAFETY_MARGIN, True );
/* store the parameters */
make_samr_q_query_usergroups(&q_o, pol);
@@ -2079,8 +2079,8 @@ BOOL samr_query_groupinfo( POLICY_HND *pol,
/* create and send a MSRPC command with api SAMR_QUERY_GROUPINFO */
- prs_init(&data , 1024, 4, SAFETY_MARGIN, False);
- prs_init(&rdata, 0 , 4, SAFETY_MARGIN, True );
+ prs_init(&data , 0, 4, SAFETY_MARGIN, False);
+ prs_init(&rdata, 0, 4, SAFETY_MARGIN, True );
/* store the parameters */
make_samr_q_query_groupinfo(&q_o, pol, switch_value);
@@ -2143,8 +2143,8 @@ BOOL samr_set_userinfo2( POLICY_HND *pol, uint16 switch_value,
/* create and send a MSRPC command with api SAMR_SET_USERINFO2 */
- prs_init(&data , 1024, 4, SAFETY_MARGIN, False);
- prs_init(&rdata, 0 , 4, SAFETY_MARGIN, True );
+ prs_init(&data , 0, 4, SAFETY_MARGIN, False);
+ prs_init(&rdata, 0, 4, SAFETY_MARGIN, True );
/* store the parameters */
make_samr_q_set_userinfo2(&q_o, pol, switch_value, usr);
@@ -2197,8 +2197,8 @@ BOOL samr_set_userinfo( POLICY_HND *pol, uint16 switch_value, void* usr)
/* create and send a MSRPC command with api SAMR_SET_USERINFO */
- prs_init(&data , 1024, 4, SAFETY_MARGIN, False);
- prs_init(&rdata, 0 , 4, SAFETY_MARGIN, True );
+ prs_init(&data , 0, 4, SAFETY_MARGIN, False);
+ prs_init(&rdata, 0, 4, SAFETY_MARGIN, True );
/* store the parameters */
make_samr_q_set_userinfo(&q_o, pol, switch_value, usr);
@@ -2251,8 +2251,8 @@ BOOL samr_query_userinfo( POLICY_HND *pol, uint16 switch_value, void* usr)
/* create and send a MSRPC command with api SAMR_QUERY_USERINFO */
- prs_init(&data , 1024, 4, SAFETY_MARGIN, False);
- prs_init(&rdata, 0 , 4, SAFETY_MARGIN, True );
+ prs_init(&data , 0, 4, SAFETY_MARGIN, False);
+ prs_init(&rdata, 0, 4, SAFETY_MARGIN, True );
/* store the parameters */
make_samr_q_query_userinfo(&q_o, pol, switch_value);
@@ -2312,8 +2312,8 @@ BOOL samr_close( POLICY_HND *hnd)
if (hnd == NULL) return False;
- prs_init(&data , 1024, 4, SAFETY_MARGIN, False);
- prs_init(&rdata, 0 , 4, SAFETY_MARGIN, True );
+ prs_init(&data , 0, 4, SAFETY_MARGIN, False);
+ prs_init(&rdata, 0, 4, SAFETY_MARGIN, True );
/* create and send a MSRPC command with api SAMR_CLOSE_HND */
@@ -2391,8 +2391,8 @@ BOOL samr_query_dispinfo( POLICY_HND *pol_domain, uint16 level,
/* create and send a MSRPC command with api SAMR_QUERY_DISPINFO */
- prs_init(&data , 1024, 4, SAFETY_MARGIN, False);
- prs_init(&rdata, 0 , 4, SAFETY_MARGIN, True );
+ prs_init(&data , 0, 4, SAFETY_MARGIN, False);
+ prs_init(&rdata, 0, 4, SAFETY_MARGIN, True );
/* store the parameters */
make_samr_q_query_dispinfo(&q_o, pol_domain, level, 0, 0xffffffff);
diff --git a/source/rpc_client/cli_svcctl.c b/source/rpc_client/cli_svcctl.c
index b284b2661e1..901a0757bba 100644
--- a/source/rpc_client/cli_svcctl.c
+++ b/source/rpc_client/cli_svcctl.c
@@ -52,8 +52,8 @@ BOOL svc_open_sc_man( const char *srv_name, char *db_name,
if (hnd == NULL) return False;
- prs_init(&buf , 1024, 4, SAFETY_MARGIN, False);
- prs_init(&rbuf, 0 , 4, SAFETY_MARGIN, True );
+ prs_init(&buf , 0, 4, SAFETY_MARGIN, False);
+ prs_init(&rbuf, 0, 4, SAFETY_MARGIN, True );
/* create and send a MSRPC command with api SVC_OPEN_SC_MAN */
@@ -122,8 +122,8 @@ BOOL svc_open_service( POLICY_HND *scm_hnd,
if (hnd == NULL || scm_hnd == NULL) return False;
- prs_init(&buf , 1024, 4, SAFETY_MARGIN, False);
- prs_init(&rbuf, 0 , 4, SAFETY_MARGIN, True );
+ prs_init(&buf , 0, 4, SAFETY_MARGIN, False);
+ prs_init(&rbuf, 0, 4, SAFETY_MARGIN, True );
/* create and send a MSRPC command with api SVC_OPEN_SERVICE */
@@ -194,8 +194,8 @@ BOOL svc_enum_svcs( POLICY_HND *hnd,
return False;
}
- prs_init(&buf , 1024, 4, SAFETY_MARGIN, False);
- prs_init(&rbuf, 0 , 4, SAFETY_MARGIN, True );
+ prs_init(&buf , 0, 4, SAFETY_MARGIN, False);
+ prs_init(&rbuf, 0, 4, SAFETY_MARGIN, True );
/* create and send a MSRPC command with api SVC_ENUM_SVCS_STATUS */
@@ -273,8 +273,8 @@ BOOL svc_stop_service( POLICY_HND *hnd,
/* create and send a MSRPC command with api SVC_STOP_SERVICE */
- prs_init(&buf , 1024, 4, SAFETY_MARGIN, False);
- prs_init(&rbuf, 0 , 4, SAFETY_MARGIN, True );
+ prs_init(&buf , 0, 4, SAFETY_MARGIN, False);
+ prs_init(&rbuf, 0, 4, SAFETY_MARGIN, True );
DEBUG(4,("SVC Stop Service\n"));
@@ -338,8 +338,8 @@ BOOL svc_start_service( POLICY_HND *hnd,
/* create and send a MSRPC command with api SVC_START_SERVICE */
- prs_init(&buf , 1024, 4, SAFETY_MARGIN, False);
- prs_init(&rbuf, 0 , 4, SAFETY_MARGIN, True );
+ prs_init(&buf , 0, 4, SAFETY_MARGIN, False);
+ prs_init(&rbuf, 0, 4, SAFETY_MARGIN, True );
DEBUG(4,("SVC Start Service\n"));
@@ -403,8 +403,8 @@ BOOL svc_query_svc_cfg( POLICY_HND *hnd,
/* create and send a MSRPC command with api SVC_QUERY_SVC_CONFIG */
- prs_init(&buf , 1024, 4, SAFETY_MARGIN, False);
- prs_init(&rbuf, 0 , 4, SAFETY_MARGIN, True );
+ prs_init(&buf , 0, 4, SAFETY_MARGIN, False);
+ prs_init(&rbuf, 0, 4, SAFETY_MARGIN, True );
DEBUG(4,("SVC Query Service Config\n"));
@@ -469,8 +469,8 @@ BOOL svc_close(POLICY_HND *hnd)
/* create and send a MSRPC command with api SVC_CLOSE */
- prs_init(&buf , 1024, 4, SAFETY_MARGIN, False);
- prs_init(&rbuf, 0 , 4, SAFETY_MARGIN, True );
+ prs_init(&buf , 0, 4, SAFETY_MARGIN, False);
+ prs_init(&rbuf, 0, 4, SAFETY_MARGIN, True );
DEBUG(4,("SVC Close\n"));
@@ -556,8 +556,8 @@ BOOL svc_change_svc_cfg( POLICY_HND *hnd,
/* create and send a MSRPC command with api SVC_CHANGE_SVC_CONFIG */
- prs_init(&buf , 1024, 4, SAFETY_MARGIN, False);
- prs_init(&rbuf, 0 , 4, SAFETY_MARGIN, True );
+ prs_init(&buf , 0, 4, SAFETY_MARGIN, False);
+ prs_init(&rbuf, 0, 4, SAFETY_MARGIN, True );
DEBUG(4,("SVC Change Service Config\n"));
diff --git a/source/rpc_parse/parse_prs.c b/source/rpc_parse/parse_prs.c
index fe47c855a3f..55ab53cfd67 100644
--- a/source/rpc_parse/parse_prs.c
+++ b/source/rpc_parse/parse_prs.c
@@ -33,6 +33,7 @@ extern int DEBUGLEVEL;
********************************************************************/
void prs_debug(prs_struct *ps, int depth, char *desc, char *fn_name)
{
+ CHECK_STRUCT(ps);
DEBUG(5+depth, ("%s%06x %s %s\n", tab_depth(depth), ps->offset, fn_name, desc));
}
@@ -41,6 +42,7 @@ void prs_debug(prs_struct *ps, int depth, char *desc, char *fn_name)
********************************************************************/
void prs_debug_out(prs_struct *ps, char *msg, int level)
{
+ CHECK_STRUCT(ps);
DEBUG(level,("%s ps: io %s align %d offset %d err %d data %p len %d\n",
msg, BOOLSTR(ps->io), ps->align, ps->offset, ps->error,
ps->data,
@@ -54,13 +56,15 @@ void prs_init(prs_struct *ps, uint32 size,
uint8 align, uint32 margin,
BOOL io)
{
+ ps->struct_start = 0xfefefefe;
ps->io = io;
ps->align = align;
ps->offset = 0;
ps->error = False;
ps->data = NULL;
- mem_buf_init(&(ps->data), margin);
+ ps->struct_end = 0xdcdcdcdc;
+ mem_buf_init(&(ps->data), 0);
if (size != 0)
{
@@ -68,6 +72,7 @@ void prs_init(prs_struct *ps, uint32 size,
ps->data->offset.start = 0;
ps->data->offset.end = 0xffffffff;
}
+ CHECK_STRUCT(ps);
}
/*******************************************************************
@@ -76,8 +81,9 @@ void prs_init(prs_struct *ps, uint32 size,
BOOL prs_copy(prs_struct *ps, const prs_struct *from)
{
int len = mem_buf_len(from->data);
+ CHECK_STRUCT(ps);
prs_init(ps, len, from->align, from->data->margin, from->io);
- if (!mem_buf_copy(mem_data(&ps->data, 0), from->data, 0, len))
+ if (!mem_buf_copy(mem_data(ps->data, 0), from->data, 0, len))
{
return False;
}
@@ -91,6 +97,7 @@ BOOL prs_copy(prs_struct *ps, const prs_struct *from)
********************************************************************/
void prs_mem_free(prs_struct *ps)
{
+ CHECK_STRUCT(ps);
mem_buf_free(&(ps->data));
}
@@ -99,6 +106,7 @@ void prs_mem_free(prs_struct *ps)
********************************************************************/
void prs_link(prs_struct *prev, prs_struct *ps, prs_struct *next)
{
+ CHECK_STRUCT(ps);
ps->data->offset.start = prev != NULL ? prev->data->offset.end : 0;
ps->data->offset.end = ps->data->offset.start + ps->offset;
ps->data->next = next != NULL ? next->data : NULL;
@@ -115,6 +123,7 @@ void prs_link(prs_struct *prev, prs_struct *ps, prs_struct *next)
void prs_align(prs_struct *ps)
{
int mod;
+ CHECK_STRUCT(ps);
if (ps->error) return;
mod = ps->offset & (ps->align-1);
if (ps->align != 0 && mod != 0)
@@ -130,6 +139,7 @@ void prs_align(prs_struct *ps)
********************************************************************/
BOOL prs_grow(prs_struct *ps, uint32 new_size)
{
+ CHECK_STRUCT(ps);
if (ps->error) return False;
return mem_grow_data(&(ps->data), ps->io, new_size, False);
}
@@ -143,8 +153,9 @@ BOOL prs_append_data(prs_struct *ps, const char *data, int len)
int new_size = prev_size + len;
char *to;
+ CHECK_STRUCT(ps);
mem_realloc_data(ps->data, new_size);
- to = mem_data(&ps->data, prev_size);
+ to = mem_data(ps->data, prev_size);
if (to == NULL || ps->data->data_used != new_size)
{
return False;
@@ -160,9 +171,10 @@ BOOL prs_append_data(prs_struct *ps, const char *data, int len)
BOOL _prs_uint8(char *name, prs_struct *ps, int depth, uint8 *data8)
{
char *q;
+ CHECK_STRUCT(ps);
if (ps->error) return False;
prs_grow(ps, ps->offset + 1);
- q = mem_data(&(ps->data), ps->offset);
+ q = mem_data(ps->data, ps->offset);
if (q == NULL)
{
ps->error = True;
@@ -183,9 +195,10 @@ BOOL _prs_uint8(char *name, prs_struct *ps, int depth, uint8 *data8)
BOOL _prs_uint16(char *name, prs_struct *ps, int depth, uint16 *data16)
{
char *q;
+ CHECK_STRUCT(ps);
if (ps->error) return False;
prs_grow(ps, ps->offset + 2);
- q = mem_data(&(ps->data), ps->offset);
+ q = mem_data(ps->data, ps->offset);
if (q == NULL)
{
ps->error = True;
@@ -205,8 +218,9 @@ BOOL _prs_uint16(char *name, prs_struct *ps, int depth, uint16 *data16)
BOOL _prs_hash1(prs_struct *ps, uint32 offset, uint8 sess_key[16])
{
char *q;
+ CHECK_STRUCT(ps);
if (ps->error) return False;
- q = mem_data(&(ps->data), ps->offset);
+ q = mem_data(ps->data, ps->offset);
if (q == NULL)
{
ps->error = True;
@@ -233,9 +247,10 @@ BOOL _prs_hash1(prs_struct *ps, uint32 offset, uint8 sess_key[16])
BOOL _prs_uint32(char *name, prs_struct *ps, int depth, uint32 *data32)
{
char *q;
+ CHECK_STRUCT(ps);
if (ps->error) return False;
prs_grow(ps, ps->offset + 4);
- q = mem_data(&(ps->data), ps->offset);
+ q = mem_data(ps->data, ps->offset);
if (q == NULL)
{
ps->error = True;
@@ -258,11 +273,12 @@ BOOL _prs_uint8s(BOOL charmode, char *name, prs_struct *ps, int depth, uint8 *da
char *q;
int end_offset;
char *e;
+ CHECK_STRUCT(ps);
if (ps->error) return False;
end_offset = ps->offset + len * sizeof(uint8);
prs_grow(ps, end_offset);
- q = mem_data(&(ps->data), ps->offset);
- e = mem_data(&(ps->data), end_offset-1);
+ q = mem_data(ps->data, ps->offset);
+ e = mem_data(ps->data, end_offset-1);
if (q == NULL || e == NULL)
{
@@ -285,11 +301,12 @@ BOOL _prs_uint16s(BOOL charmode, char *name, prs_struct *ps, int depth, uint16 *
char *q;
int end_offset;
char *e;
+ CHECK_STRUCT(ps);
if (ps->error) return False;
end_offset = ps->offset + len * sizeof(uint16);
prs_grow(ps, end_offset);
- q = mem_data(&(ps->data), ps->offset);
- e = mem_data(&(ps->data), end_offset-1);
+ q = mem_data(ps->data, ps->offset);
+ e = mem_data(ps->data, end_offset-1);
if (q == NULL || e == NULL)
{
@@ -312,11 +329,12 @@ BOOL _prs_uint32s(BOOL charmode, char *name, prs_struct *ps, int depth, uint32 *
char *q;
int end_offset;
char *e;
+ CHECK_STRUCT(ps);
if (ps->error) return False;
end_offset = ps->offset + len * sizeof(uint32);
prs_grow(ps, end_offset);
- q = mem_data(&(ps->data), ps->offset);
- e = mem_data(&(ps->data), end_offset-1);
+ q = mem_data(ps->data, ps->offset);
+ e = mem_data(ps->data, end_offset-1);
if (q == NULL || e == NULL)
{
@@ -340,11 +358,12 @@ BOOL _prs_buffer2(BOOL charmode, char *name, prs_struct *ps, int depth, BUFFER2
char *q;
int end_offset;
char *e;
+ CHECK_STRUCT(ps);
if (ps->error) return False;
end_offset = ps->offset + str->buf_len * sizeof(uint8);
prs_grow(ps, end_offset);
- q = mem_data(&(ps->data), ps->offset);
- e = mem_data(&(ps->data), end_offset-1);
+ q = mem_data(ps->data, ps->offset);
+ e = mem_data(ps->data, end_offset-1);
if (q == NULL || e == NULL)
{
@@ -368,11 +387,12 @@ BOOL _prs_string2(BOOL charmode, char *name, prs_struct *ps, int depth, STRING2
char *q;
int end_offset;
char *e;
+ CHECK_STRUCT(ps);
if (ps->error) return False;
end_offset = ps->offset + str->str_str_len * sizeof(uint8);
prs_grow(ps, end_offset);
- q = mem_data(&(ps->data), ps->offset);
- e = mem_data(&(ps->data), end_offset-1);
+ q = mem_data(ps->data, ps->offset);
+ e = mem_data(ps->data, end_offset-1);
if (q == NULL || e == NULL)
{
@@ -396,11 +416,12 @@ BOOL _prs_unistr2(BOOL charmode, char *name, prs_struct *ps, int depth, UNISTR2
char *q;
int end_offset;
char *e;
+ CHECK_STRUCT(ps);
if (ps->error) return False;
end_offset = ps->offset + str->uni_str_len * sizeof(uint16);
prs_grow(ps, end_offset);
- q = mem_data(&(ps->data), ps->offset);
- e = mem_data(&(ps->data), end_offset-1);
+ q = mem_data(ps->data, ps->offset);
+ e = mem_data(ps->data, end_offset-1);
if (q == NULL || e == NULL)
{
@@ -424,11 +445,12 @@ BOOL _prs_unistr3(BOOL charmode, char *name, UNISTR3 *str, prs_struct *ps, int d
char *q;
int end_offset;
char *e;
+ CHECK_STRUCT(ps);
if (ps->error) return False;
end_offset = ps->offset + str->uni_str_len * sizeof(uint16);
prs_grow(ps, end_offset);
- q = mem_data(&(ps->data), ps->offset);
- e = mem_data(&(ps->data), end_offset-1);
+ q = mem_data(ps->data, ps->offset);
+ e = mem_data(ps->data, end_offset-1);
if (q == NULL || e == NULL)
{
@@ -450,15 +472,16 @@ BOOL _prs_unistr(char *name, prs_struct *ps, int depth, UNISTR *str)
{
int i = -1;
uint8 *start;
+ CHECK_STRUCT(ps);
if (ps->error) return False;
- start = (uint8*)mem_data(&(ps->data), ps->offset);
+ start = (uint8*)mem_data(ps->data, ps->offset);
do
{
char *q;
i++;
prs_grow(ps, ps->offset + i*2);
- q = mem_data(&(ps->data), ps->offset + i*2);
+ q = mem_data(ps->data, ps->offset + i*2);
if (q == NULL)
{
ps->error = True;
@@ -490,8 +513,9 @@ BOOL _prs_string(char *name, prs_struct *ps, int depth, char *str, uint16 len, u
{
int i = -1; /* start off at zero after 1st i++ */
uint8 *start;
+ CHECK_STRUCT(ps);
if (ps->error) return False;
- start = (uint8*)mem_data(&(ps->data), ps->offset);
+ start = (uint8*)mem_data(ps->data, ps->offset);
DEBUG(200,("_prs_string: string %s len %d max %d\n",
str, len, max_buf_size));
@@ -504,7 +528,7 @@ BOOL _prs_string(char *name, prs_struct *ps, int depth, char *str, uint16 len, u
i++;
prs_grow(ps, ps->offset + i);
- q = mem_data(&(ps->data), ps->offset + i);
+ q = mem_data(ps->data, ps->offset + i);
if (q == NULL)
{
ps->error = True;
@@ -540,6 +564,7 @@ BOOL _prs_string(char *name, prs_struct *ps, int depth, char *str, uint16 len, u
********************************************************************/
BOOL _prs_uint16_pre(char *name, prs_struct *ps, int depth, uint16 *data16, uint32 *offset)
{
+ CHECK_STRUCT(ps);
if (ps->error) return False;
(*offset) = ps->offset;
if (ps->io)
@@ -561,6 +586,7 @@ BOOL _prs_uint16_pre(char *name, prs_struct *ps, int depth, uint16 *data16, uint
BOOL _prs_uint16_post(char *name, prs_struct *ps, int depth, uint16 *data16,
uint32 ptr_uint16, uint32 start_offset)
{
+ CHECK_STRUCT(ps);
if (ps->error) return False;
if (!ps->io)
{
@@ -585,6 +611,7 @@ BOOL _prs_uint16_post(char *name, prs_struct *ps, int depth, uint16 *data16,
********************************************************************/
BOOL _prs_uint32_pre(char *name, prs_struct *ps, int depth, uint32 *data32, uint32 *offset)
{
+ CHECK_STRUCT(ps);
if (ps->error) return False;
(*offset) = ps->offset;
if (ps->io)
@@ -606,6 +633,7 @@ BOOL _prs_uint32_pre(char *name, prs_struct *ps, int depth, uint32 *data32, uint
BOOL _prs_uint32_post(char *name, prs_struct *ps, int depth, uint32 *data32,
uint32 ptr_uint32, uint32 data_size)
{
+ CHECK_STRUCT(ps);
if (ps->error) return False;
if (!ps->io)
{
diff --git a/source/rpc_server/srv_pipe.c b/source/rpc_server/srv_pipe.c
index 8a11b7ad3df..70a958388db 100644
--- a/source/rpc_server/srv_pipe.c
+++ b/source/rpc_server/srv_pipe.c
@@ -171,7 +171,7 @@ BOOL create_rpc_reply(rpcsrv_struct *l, uint32 data_start)
l->rdata_i.data = NULL;
prs_init(&l->rdata_i, 0, l->rdata.align, l->rdata.data->margin, l->rdata.io);
- data = mem_data(&(l->rdata.data), data_start);
+ data = mem_data(l->rdata.data, data_start);
mem_create(l->rdata_i.data, data, 0, data_len, 0, False);
l->rdata_i.offset = data_len;
l->rdata_offset += data_len;
@@ -201,7 +201,7 @@ BOOL create_rpc_reply(rpcsrv_struct *l, uint32 data_start)
l->ntlmssp_seq_num++;
make_rpc_auth_ntlmssp_chk(&l->ntlmssp_chk, NTLMSSP_SIGN_VERSION, crc32, l->ntlmssp_seq_num++);
smb_io_rpc_auth_ntlmssp_chk("auth_sign", &(l->ntlmssp_chk), &l->rverf, 0);
- auth_data = mem_data(&l->rverf.data, 4);
+ auth_data = mem_data(l->rverf.data, 4);
NTLMSSPcalc_p(l, (uchar*)auth_data, 12);
}
}
@@ -759,7 +759,7 @@ static BOOL api_pipe_auth_process(rpcsrv_struct *l, prs_struct *pd)
if (auth_seal)
{
- char *data = mem_data(&pd->data, pd->offset);
+ char *data = mem_data(pd->data, pd->offset);
DEBUG(5,("api_pipe_auth_process: data %d\n", pd->offset));
NTLMSSPcalc_p(l, (uchar*)data, data_len);
crc32 = crc32_calc_buffer(data_len, data);
@@ -776,7 +776,7 @@ static BOOL api_pipe_auth_process(rpcsrv_struct *l, prs_struct *pd)
if (auth_verify)
{
- char *req_data = mem_data(&pd->data, pd->offset + 4);
+ char *req_data = mem_data(pd->data, pd->offset + 4);
DEBUG(5,("api_pipe_auth_process: auth %d\n", pd->offset + 4));
NTLMSSPcalc_p(l, (uchar*)req_data, 12);
smb_io_rpc_auth_ntlmssp_chk("auth_sign", &(l->ntlmssp_chk), pd, 0);
@@ -853,7 +853,7 @@ BOOL rpc_add_to_pdu(prs_struct *ps, const char *data, int len)
DEBUG(10,("ps->data->start: %d\n", ps->data->offset.start));
ps->data->offset.start = 0x0;
- to = mem_data(&ps->data, prev_size);
+ to = mem_data(ps->data, prev_size);
if (to == NULL)
{
DEBUG(10,("rpc_add_to_pdu: data could not be found\n"));
@@ -1044,8 +1044,7 @@ static BOOL api_rpc_command(rpcsrv_struct *l,
return False;
}
- /* start off with 1024 bytes, and a large safety margin too */
- prs_init(&l->rdata, 1024, 4, SAFETY_MARGIN, False);
+ prs_init(&l->rdata, 0, 4, 0, False);
/* do the actual command */
api_rpc_cmds[fn_num].fn(l, data, &(l->rdata));
diff --git a/source/rpc_server/srv_pipe_hnd.c b/source/rpc_server/srv_pipe_hnd.c
index 2452293ce7a..8f0f6e2fe6c 100644
--- a/source/rpc_server/srv_pipe_hnd.c
+++ b/source/rpc_server/srv_pipe_hnd.c
@@ -135,7 +135,10 @@ pipes_struct *open_rpc_pipe_p(char *pipe_name,
DEBUG(5,("open pipes: name %s pnum=%x\n", p->name, p->pnum));
}
+ become_root(False); /* to connect to pipe */
m = msrpc_use_add(pipe_name, &usr, False);
+ unbecome_root(False);
+
if (m == NULL)
{
DEBUG(5,("open pipes: msrpc redirect failed\n"));
diff --git a/source/rpcclient/cmd_netlogon.c b/source/rpcclient/cmd_netlogon.c
index c518fbb9f5f..6c51e4bb628 100644
--- a/source/rpcclient/cmd_netlogon.c
+++ b/source/rpcclient/cmd_netlogon.c
@@ -33,7 +33,7 @@ extern int DEBUGLEVEL;
#define DEBUG_TESTING
-extern struct ntuser_creds *usr_creds;
+extern struct user_creds *usr_creds;
extern FILE* out_hnd;
@@ -61,7 +61,7 @@ void cmd_netlogon_login_test(struct client_info *info, int argc, char *argv[])
fstrcat(srv_name, info->dest_host);
strupper(srv_name);
- fstrcpy(domain, usr_creds->domain);
+ fstrcpy(domain, usr_creds->ntc.domain);
if (domain[0] == 0)
{
@@ -80,7 +80,7 @@ void cmd_netlogon_login_test(struct client_info *info, int argc, char *argv[])
if (argc < 1)
{
- fstrcpy(nt_user_name, usr_creds->user_name);
+ fstrcpy(nt_user_name, usr_creds->ntc.user_name);
if (nt_user_name[0] == 0)
{
report(out_hnd,"ntlogin: must specify username with anonymous connection\n");
@@ -134,7 +134,7 @@ void cmd_netlogon_login_test(struct client_info *info, int argc, char *argv[])
#if 0
/* check whether the user wants to change their machine password */
res = res ? trust_account_check(info->dest_ip, info->dest_host,
- info->myhostname, usr_creds->domain,
+ info->myhostname, usr_creds->ntc.domain,
info->mach_acct, new_mach_pwd) : False;
#endif
@@ -163,7 +163,7 @@ void cmd_netlogon_login_test(struct client_info *info, int argc, char *argv[])
/* do an NT login */
res = res ? cli_nt_login_interactive(srv_name, info->myhostname,
- usr_creds->domain, nt_user_name,
+ usr_creds->ntc.domain, nt_user_name,
getuid(), nt_password,
&info->dom.ctr, &info->dom.user_info3) : False;
@@ -209,7 +209,7 @@ void cmd_netlogon_domain_test(struct client_info *info, int argc, char *argv[])
fstrcpy(inter_dom_acct, nt_trust_dom);
fstrcat(inter_dom_acct, "$");
- res = res ? trust_get_passwd(trust_passwd, usr_creds->domain, nt_trust_dom) : False;
+ res = res ? trust_get_passwd(trust_passwd, usr_creds->ntc.domain, nt_trust_dom) : False;
res = res ? cli_nt_setup_creds(srv_name,
info->myhostname, inter_dom_acct,
@@ -241,7 +241,7 @@ void cmd_sam_sync(struct client_info *info, int argc, char *argv[])
fstrcpy(trust_acct, info->myhostname);
fstrcat(trust_acct, "$");
- if (!trust_get_passwd(trust_passwd, usr_creds->domain, info->myhostname))
+ if (!trust_get_passwd(trust_passwd, usr_creds->ntc.domain, info->myhostname))
{
report(out_hnd, "cmd_sam_sync: no trust account password\n");
return;
diff --git a/source/rpcclient/cmd_samr.c b/source/rpcclient/cmd_samr.c
index 77db0c1e88d..9be701db496 100644
--- a/source/rpcclient/cmd_samr.c
+++ b/source/rpcclient/cmd_samr.c
@@ -33,7 +33,7 @@ extern int DEBUGLEVEL;
#define DEBUG_TESTING
-extern struct ntuser_creds *usr_creds;
+extern struct user_creds *usr_creds;
extern FILE* out_hnd;
@@ -167,8 +167,8 @@ void cmd_sam_ntchange_pwd(struct client_info *info, int argc, char *argv[])
}
else
{
- safe_strcpy(acct_name, usr_creds->user_name, sizeof(acct_name));
- pwd_get_lm_nt_16(&(usr_creds->pwd), lm_oldhash, nt_oldhash );
+ safe_strcpy(acct_name, usr_creds->ntc.user_name, sizeof(acct_name));
+ pwd_get_lm_nt_16(&(usr_creds->ntc.pwd), lm_oldhash, nt_oldhash );
}
new_passwd = (char*)getpass("New Password (ONCE ONLY - get it right :-)");
@@ -178,7 +178,7 @@ void cmd_sam_ntchange_pwd(struct client_info *info, int argc, char *argv[])
E_old_pw_hash(lm_newhash, lm_oldhash, lm_hshhash);
E_old_pw_hash(lm_newhash, nt_oldhash, nt_hshhash);
- usr_creds->ntlmssp_flags = NTLMSSP_NEGOTIATE_UNICODE |
+ usr_creds->ntc.ntlmssp_flags = NTLMSSP_NEGOTIATE_UNICODE |
NTLMSSP_NEGOTIATE_OEM |
NTLMSSP_NEGOTIATE_SIGN |
NTLMSSP_NEGOTIATE_SEAL |
@@ -240,7 +240,7 @@ void cmd_sam_test(struct client_info *info, int argc, char *argv[])
report(out_hnd, "SAM Encryption Test\n");
- usr_creds->ntlmssp_flags = NTLMSSP_NEGOTIATE_UNICODE |
+ usr_creds->ntc.ntlmssp_flags = NTLMSSP_NEGOTIATE_UNICODE |
NTLMSSP_NEGOTIATE_OEM |
NTLMSSP_NEGOTIATE_SIGN |
NTLMSSP_NEGOTIATE_SEAL |
diff --git a/source/rpcclient/cmd_spoolss.c b/source/rpcclient/cmd_spoolss.c
index 43fa9900d40..1bca5e418f3 100644
--- a/source/rpcclient/cmd_spoolss.c
+++ b/source/rpcclient/cmd_spoolss.c
@@ -34,7 +34,7 @@ extern int DEBUGLEVEL;
extern FILE* out_hnd;
-extern struct ntuser_creds *usr_creds;
+extern struct user_creds *usr_creds;
/****************************************************************************
nt spoolss query
@@ -127,11 +127,11 @@ void cmd_spoolss_open_printer_ex(struct client_info *info, int argc, char *argv[
}
DEBUG(4,("spoolopen - printer: %s server: %s user: %s\n",
- printer_name, station, usr_creds->user_name));
+ printer_name, station, usr_creds->ntc.user_name));
res = res ? spoolss_open_printer_ex( printer_name,
0, 0, 0,
- station, usr_creds->user_name,
+ station, usr_creds->ntc.user_name,
&hnd) : False;
res = res ? spoolss_closeprinter(&hnd) : False;
@@ -245,10 +245,10 @@ void cmd_spoolss_enum_jobs(struct client_info *info, int argc, char *argv[])
}
DEBUG(4,("spoolopen - printer: %s station: %s user: %s\n",
- printer_name, station, usr_creds->user_name));
+ printer_name, station, usr_creds->ntc.user_name));
if (msrpc_spoolss_enum_jobs( printer_name, station,
- usr_creds->user_name,
+ usr_creds->ntc.user_name,
level, &num, &ctr,
spool_job_info_ctr))
{
diff --git a/source/rpcclient/rpcclient.c b/source/rpcclient/rpcclient.c
index 517697a8c5b..dbf7174b289 100644
--- a/source/rpcclient/rpcclient.c
+++ b/source/rpcclient/rpcclient.c
@@ -48,7 +48,7 @@ static void cmd_quit(struct client_info *info, int argc, char *argv[]);
static void cmd_set (struct client_info *info, int argc, char *argv[]);
static void cmd_net (struct client_info *info, int argc, char *argv[]);
-static struct ntuser_creds usr;
+static struct user_creds usr;
static struct client_info cli_info;
@@ -759,15 +759,15 @@ static BOOL process( struct client_info *info, char *cmd_str)
BOOL at_sym = False;
pline[0] = 0;
safe_strcat(pline, "[", sizeof(pline)-1);
- if (usr.domain[0] != 0)
+ if (usr.ntc.domain[0] != 0)
{
- safe_strcat(pline, usr.domain, sizeof(pline)-1);
+ safe_strcat(pline, usr.ntc.domain, sizeof(pline)-1);
safe_strcat(pline, "\\", sizeof(pline)-1);
at_sym = True;
}
- if (usr.user_name[0] != 0)
+ if (usr.ntc.user_name[0] != 0)
{
- safe_strcat(pline, usr.user_name, sizeof(pline)-1);
+ safe_strcat(pline, usr.ntc.user_name, sizeof(pline)-1);
at_sym = True;
}
if (at_sym)
@@ -1356,9 +1356,9 @@ static void cmd_net(struct client_info *info, int argc, char *argv[])
BOOL null_pwd = False;
BOOL got_pwd = False;
pstring password;
- extern struct ntuser_creds *usr_creds;
+ extern struct user_creds *usr_creds;
- copy_nt_creds(&u, usr_creds);
+ copy_nt_creds(&u, &usr_creds->ntc);
pstrcpy(dest_host, cli_info.dest_host);
pstrcpy(u.user_name,optarg);
@@ -1635,15 +1635,15 @@ static void cmd_set(struct client_info *info, int argc, char *argv[])
{
char *lp;
cmd_set_options |= CMD_USER;
- pstrcpy(usr.user_name,optarg);
- if ((lp=strchr(usr.user_name,'%')))
+ pstrcpy(usr.ntc.user_name,optarg);
+ if ((lp=strchr(usr.ntc.user_name,'%')))
{
*lp = 0;
pstrcpy(password,lp+1);
cmd_set_options |= CMD_PASS;
memset(strchr(optarg,'%')+1,'X',strlen(password));
}
- if (usr.user_name[0] == 0 && password[0] == 0)
+ if (usr.ntc.user_name[0] == 0 && password[0] == 0)
{
cmd_set_options |= CMD_NOPW;
}
@@ -1653,7 +1653,7 @@ static void cmd_set(struct client_info *info, int argc, char *argv[])
case 'W':
{
cmd_set_options |= CMD_DOM;
- pstrcpy(usr.domain,optarg);
+ pstrcpy(usr.ntc.domain,optarg);
break;
}
@@ -1760,11 +1760,11 @@ static void cmd_set(struct client_info *info, int argc, char *argv[])
if (IS_BITS_SET_ALL(cmd_set_options, CMD_NOPW))
{
- set_user_password(&usr, True, NULL);
+ set_user_password(&usr.ntc, True, NULL);
}
else if (IS_BITS_SET_ALL(cmd_set_options, CMD_PASS))
{
- set_user_password(&usr, True, password);
+ set_user_password(&usr.ntc, True, password);
}
/* paranoia: destroy the local copy of the password */
@@ -1860,12 +1860,12 @@ void readline_init(void)
****************************************************************************/
int main(int argc,char *argv[])
{
- extern struct ntuser_creds *usr_creds;
+ extern struct user_creds *usr_creds;
mode_t myumask = 0755;
DEBUGLEVEL = 2;
- usr.ntlmssp_flags = 0x0;
+ usr.ntc.ntlmssp_flags = 0x0;
usr_creds = &usr;
out_hnd = stdout;
@@ -1873,8 +1873,8 @@ void readline_init(void)
init_policy_hnd(64);
- pstrcpy(usr.domain, "");
- pstrcpy(usr.user_name, "");
+ pstrcpy(usr.ntc.domain, "");
+ pstrcpy(usr.ntc.user_name, "");
pstrcpy(cli_info.myhostname, "");
pstrcpy(cli_info.dest_host, "");
@@ -1905,7 +1905,7 @@ void readline_init(void)
exit(1);
}
- read_user_env(&usr);
+ read_user_env(&usr.ntc);
cmd_set_options &= ~CMD_HELP;
cmd_set_options &= ~CMD_NOPW;
diff --git a/source/samrd/samrd.c b/source/samrd/samrd.c
index f88902cfb4c..590b17a6157 100644
--- a/source/samrd/samrd.c
+++ b/source/samrd/samrd.c
@@ -31,9 +31,13 @@ extern int DEBUGLEVEL;
/*************************************************************************
initialise an msrpc service
*************************************************************************/
-void msrpc_service_init(void)
+void msrpc_service_init(char* service_name)
{
- if (!pwdb_initialise(False) || !initialise_password_db())
+ DEBUG(10,("msrpc_service_init\n"));
+
+ add_msrpc_command_processor( pipe_name, service_name, api_samr_rpc );
+
+ if (!pwdb_initialise(True) || !initialise_password_db())
{
exit(-1);
}
@@ -128,7 +132,6 @@ BOOL reload_services(BOOL test)
setup_logging(argv[0],False);
fstrcpy(pipe_name, "samr");
slprintf(debugf, sizeof(debugf), "%s/log.%s", LOGFILEBASE, pipe_name);
- add_msrpc_command_processor( pipe_name, argv[0], api_samr_rpc );
return msrpc_main(argc, argv);
}
diff --git a/source/spoolssd/spoolssd.c b/source/spoolssd/spoolssd.c
index 7ea5195009b..a576b6d7ad0 100644
--- a/source/spoolssd/spoolssd.c
+++ b/source/spoolssd/spoolssd.c
@@ -30,8 +30,9 @@ extern BOOL append_log;
/*************************************************************************
initialise an msrpc service
*************************************************************************/
-void msrpc_service_init(void)
+void msrpc_service_init(char* service_name)
{
+ add_msrpc_command_processor( pipe_name, service_name, api_spoolss_rpc );
init_printer_hnd(); /* for SPOOLSS handles */
}
@@ -94,7 +95,6 @@ BOOL reload_services(BOOL test)
setup_logging(argv[0],False);
fstrcpy(pipe_name, "spoolss");
slprintf(debugf, sizeof(debugf), "%s/log.%s", LOGFILEBASE, pipe_name);
- add_msrpc_command_processor( pipe_name, argv[0], api_spoolss_rpc );
return msrpc_main(argc, argv);
}
diff --git a/source/srvsvcd/srvsvcd.c b/source/srvsvcd/srvsvcd.c
index 78c64a200b3..be22b4ac77b 100644
--- a/source/srvsvcd/srvsvcd.c
+++ b/source/srvsvcd/srvsvcd.c
@@ -30,8 +30,9 @@ extern BOOL append_log;
/*************************************************************************
initialise an msrpc service
*************************************************************************/
-void msrpc_service_init(void)
+void msrpc_service_init(char* service_name)
{
+ add_msrpc_command_processor( pipe_name, service_name, api_srvsvc_rpc );
}
/****************************************************************************
@@ -91,7 +92,6 @@ BOOL reload_services(BOOL test)
setup_logging(argv[0],False);
fstrcpy(pipe_name, "srvsvc");
slprintf(debugf, sizeof(debugf), "%s/log.%s", LOGFILEBASE, pipe_name);
- add_msrpc_command_processor( pipe_name, argv[0], api_srvsvc_rpc );
return msrpc_main(argc, argv);
}
diff --git a/source/svcctld/svcctld.c b/source/svcctld/svcctld.c
index 95470ad4a49..a9656685ad5 100644
--- a/source/svcctld/svcctld.c
+++ b/source/svcctld/svcctld.c
@@ -30,8 +30,9 @@ extern BOOL append_log;
/*************************************************************************
initialise an msrpc service
*************************************************************************/
-void msrpc_service_init(void)
+void msrpc_service_init(char* service_name)
{
+ add_msrpc_command_processor( pipe_name, service_name, api_svcctl_rpc );
}
/****************************************************************************
@@ -91,7 +92,6 @@ BOOL reload_services(BOOL test)
setup_logging(argv[0],False);
fstrcpy(pipe_name, "svcctl");
slprintf(debugf, sizeof(debugf), "%s/log.%s", LOGFILEBASE, pipe_name);
- add_msrpc_command_processor( pipe_name, argv[0], api_svcctl_rpc );
return msrpc_main(argc, argv);
}
diff --git a/source/utils/rpctorture.c b/source/utils/rpctorture.c
index 0933cf38c1f..7d1bedb6cd1 100644
--- a/source/utils/rpctorture.c
+++ b/source/utils/rpctorture.c
@@ -247,7 +247,7 @@ BOOL do_random_rpc(struct cli_state *cli, uint16 nt_pipe_fnum, int max_len)
opcode = sys_random() % 256;
/* turn parameters into data stream */
- rand_buf(mem_data(&buf.data, 0), param_len);
+ rand_buf(mem_data(buf.data, 0), param_len);
buf.offset = param_len;
/* send the data on \PIPE\ */
@@ -259,9 +259,9 @@ BOOL do_random_rpc(struct cli_state *cli, uint16 nt_pipe_fnum, int max_len)
{
DEBUG(0,("response! opcode: 0x%x\n", opcode));
DEBUG(0,("request: length %d\n", param_len));
- dump_data(0, mem_data(&buf.data , 0), MIN(param_len, 128));
+ dump_data(0, mem_data(buf.data , 0), MIN(param_len, 128));
DEBUG(0,("response: length %d\n", rbuf.data->offset.end));
- dump_data(0, mem_data(&rbuf.data, 0), rbuf.data->offset.end);
+ dump_data(0, mem_data(rbuf.data, 0), rbuf.data->offset.end);
}
}
diff --git a/source/winregd/winregd.c b/source/winregd/winregd.c
index c317ddd6f44..9d1fde7972c 100644
--- a/source/winregd/winregd.c
+++ b/source/winregd/winregd.c
@@ -30,8 +30,9 @@ extern BOOL append_log;
/*************************************************************************
initialise an msrpc service
*************************************************************************/
-void msrpc_service_init(void)
+void msrpc_service_init(char* service_name)
{
+ add_msrpc_command_processor( pipe_name, service_name, api_reg_rpc );
}
/****************************************************************************
@@ -91,7 +92,6 @@ BOOL reload_services(BOOL test)
setup_logging(argv[0],False);
fstrcpy(pipe_name, "winreg");
slprintf(debugf, sizeof(debugf), "%s/log.%s", LOGFILEBASE, pipe_name);
- add_msrpc_command_processor( pipe_name, argv[0], api_reg_rpc );
return msrpc_main(argc, argv);
}
diff --git a/source/wkssvcd/wkssvcd.c b/source/wkssvcd/wkssvcd.c
index dcb5bb98eef..32c2ab0c9ea 100644
--- a/source/wkssvcd/wkssvcd.c
+++ b/source/wkssvcd/wkssvcd.c
@@ -30,8 +30,9 @@ extern BOOL append_log;
/*************************************************************************
initialise an msrpc service
*************************************************************************/
-void msrpc_service_init(void)
+void msrpc_service_init(char* service_name)
{
+ add_msrpc_command_processor( pipe_name, service_name, api_wkssvc_rpc );
}
/****************************************************************************
@@ -91,7 +92,6 @@ BOOL reload_services(BOOL test)
setup_logging(argv[0],False);
fstrcpy(pipe_name, "wkssvc");
slprintf(debugf, sizeof(debugf), "%s/log.%s", LOGFILEBASE, pipe_name);
- add_msrpc_command_processor( pipe_name, argv[0], api_wkssvc_rpc );
return msrpc_main(argc, argv);
}