git.samba.org
/
samba.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Service Control Manager - service enumeration.
[samba.git]
/
source
/
rpc_client
/
cli_svcctl.c
diff --git
a/source/rpc_client/cli_svcctl.c
b/source/rpc_client/cli_svcctl.c
index 3535c90391f9a073aeabd9120fe8362fd57bc13e..f14a699802e095306410745d65e95fd4727db51a 100644
(file)
--- a/
source/rpc_client/cli_svcctl.c
+++ b/
source/rpc_client/cli_svcctl.c
@@
-97,15
+97,19
@@
do a SVC Enumerate Services
BOOL do_svc_enum_svcs(struct cli_state *cli, uint16 fnum,
POLICY_HND *hnd,
uint32 services_type, uint32 services_state,
BOOL do_svc_enum_svcs(struct cli_state *cli, uint16 fnum,
POLICY_HND *hnd,
uint32 services_type, uint32 services_state,
- uint32 buf_size, uint32 *resume_hnd,
- ENUM_SRVC_STATUS **svcs)
+ uint32 *buf_size, uint32 *resume_hnd,
+ uint32 *dos_error,
+ ENUM_SRVC_STATUS **svcs, uint32 *num_svcs)
{
prs_struct rbuf;
prs_struct buf;
SVC_Q_ENUM_SVCS_STATUS q_o;
BOOL valid_pol = False;
{
prs_struct rbuf;
prs_struct buf;
SVC_Q_ENUM_SVCS_STATUS q_o;
BOOL valid_pol = False;
- if (hnd == NULL) return False;
+ if (hnd == NULL || buf_size == NULL || dos_error == NULL || num_svcs == NULL)
+ {
+ return False;
+ }
prs_init(&buf , 1024, 4, SAFETY_MARGIN, False);
prs_init(&rbuf, 0 , 4, SAFETY_MARGIN, True );
prs_init(&buf , 1024, 4, SAFETY_MARGIN, False);
prs_init(&rbuf, 0 , 4, SAFETY_MARGIN, True );
@@
-116,7
+120,7
@@
BOOL do_svc_enum_svcs(struct cli_state *cli, uint16 fnum,
make_svc_q_enum_svcs_status(&q_o, hnd,
services_type, services_state,
make_svc_q_enum_svcs_status(&q_o, hnd,
services_type, services_state,
- buf_size, *resume_hnd);
+
*
buf_size, *resume_hnd);
/* turn parameters into data stream */
svc_io_q_enum_svcs_status("", &q_o, &buf, 0);
/* turn parameters into data stream */
svc_io_q_enum_svcs_status("", &q_o, &buf, 0);
@@
-136,13
+140,16
@@
BOOL do_svc_enum_svcs(struct cli_state *cli, uint16 fnum,
{
/* report error code */
DEBUG(0,("SVC_ENUM_SVCS_STATUS: %s\n", smb_err_msg(ERRDOS, r_o.dos_status)));
{
/* report error code */
DEBUG(0,("SVC_ENUM_SVCS_STATUS: %s\n", smb_err_msg(ERRDOS, r_o.dos_status)));
- p = r_o.dos_status
!
= ERRmoredata;
+ p = r_o.dos_status
=
= ERRmoredata;
}
if (p)
{
(*svcs) = r_o.svcs;
}
if (p)
{
(*svcs) = r_o.svcs;
+ (*num_svcs) = r_o.num_svcs;
(*resume_hnd) = get_enum_hnd(&r_o.resume_hnd);
(*resume_hnd) = get_enum_hnd(&r_o.resume_hnd);
+ (*buf_size) = r_o.more_buf_size;
+ (*dos_error) = r_o.dos_status;
valid_pol = True;
}
}
valid_pol = True;
}
}