summaryrefslogtreecommitdiff
path: root/source3/utils
diff options
context:
space:
mode:
authorVolker Lendecke <vl@samba.org>2009-11-22 22:38:45 +0100
committerKarolin Seeger <kseeger@samba.org>2009-11-26 11:41:06 +0100
commit3746053820e98d5b5566992cc599a14b335855fa (patch)
tree83e5ac2996c43d9770887151b9ce69695d706dc6 /source3/utils
parent6cc88659d4a2eea2d77d376fbfcc6e3c32c8a2a8 (diff)
downloadsamba-3746053820e98d5b5566992cc599a14b335855fa.tar.gz
s3: Fix bug 6338 -- net rpc trustdom list always display "none"
(cherry picked from commit 3fcf1a8f9c369f1181f749d2ec9f214df493e3ab)
Diffstat (limited to 'source3/utils')
-rw-r--r--source3/utils/net_rpc.c33
1 files changed, 23 insertions, 10 deletions
diff --git a/source3/utils/net_rpc.c b/source3/utils/net_rpc.c
index 4ef86d171bf..910d782fbad 100644
--- a/source3/utils/net_rpc.c
+++ b/source3/utils/net_rpc.c
@@ -6018,6 +6018,7 @@ static int rpc_trustdom_list(struct net_context *c, int argc, const char **argv)
int i;
struct lsa_DomainList dom_list;
fstring pdc_name;
+ bool found_domain;
/* trusting domains listing variables */
struct policy_handle domain_hnd;
@@ -6099,9 +6100,11 @@ static int rpc_trustdom_list(struct net_context *c, int argc, const char **argv)
* Keep calling LsaEnumTrustdom over opened pipe until
* the end of enumeration is reached
*/
-
+
d_printf(_("Trusted domains list:\n\n"));
+ found_domain = false;
+
do {
nt_status = rpccli_lsa_EnumTrustDom(pipe_hnd, mem_ctx,
&connect_hnd,
@@ -6119,16 +6122,20 @@ static int rpc_trustdom_list(struct net_context *c, int argc, const char **argv)
for (i = 0; i < dom_list.count; i++) {
print_trusted_domain(dom_list.domains[i].sid,
dom_list.domains[i].name.string);
+ found_domain = true;
};
- /*
- * in case of no trusted domains say something rather
- * than just display blank line
- */
- if (!dom_list.count) d_printf(_("none\n"));
} while (NT_STATUS_EQUAL(nt_status, STATUS_MORE_ENTRIES));
+ /*
+ * in case of no trusted domains say something rather
+ * than just display blank line
+ */
+ if (!found_domain) {
+ d_printf(_("none\n"));
+ }
+
/* close this connection before doing next one */
nt_status = rpccli_lsa_Close(pipe_hnd, mem_ctx, &connect_hnd);
if (NT_STATUS_IS_ERR(nt_status)) {
@@ -6191,6 +6198,8 @@ static int rpc_trustdom_list(struct net_context *c, int argc, const char **argv)
* perform actual enumeration
*/
+ found_domain = false;
+
enum_ctx = 0; /* reset enumeration context from last enumeration */
do {
@@ -6213,6 +6222,8 @@ static int rpc_trustdom_list(struct net_context *c, int argc, const char **argv)
char *str = CONST_DISCARD(char *, trusts->entries[i].name.string);
+ found_domain = true;
+
/*
* get each single domain's sid (do we _really_ need this ?):
* 1) connect to domain's pdc
@@ -6251,13 +6262,15 @@ static int rpc_trustdom_list(struct net_context *c, int argc, const char **argv)
"responding: %s\n"),
nt_errstr(nt_status));
d_printf(_("couldn't get domain's sid\n"));
- };
- };
-
- if (!num_domains) d_printf("none\n");
+ }
+ }
} while (NT_STATUS_EQUAL(nt_status, STATUS_MORE_ENTRIES));
+ if (!found_domain) {
+ d_printf("none\n");
+ }
+
/* close opened samr and domain policy handles */
nt_status = rpccli_samr_Close(pipe_hnd, mem_ctx, &domain_hnd);
if (!NT_STATUS_IS_OK(nt_status)) {