diff options
Diffstat (limited to 'source3/utils')
-rw-r--r-- | source3/utils/net.c | 6 | ||||
-rw-r--r-- | source3/utils/net_ads.c | 13 | ||||
-rw-r--r-- | source3/utils/net_lookup.c | 6 |
3 files changed, 22 insertions, 3 deletions
diff --git a/source3/utils/net.c b/source3/utils/net.c index 44119dc2c6..13eed2f9ca 100644 --- a/source3/utils/net.c +++ b/source3/utils/net.c @@ -924,11 +924,11 @@ static struct functable net_func[] = { c->opt_password = getenv("PASSWD"); } + /* Failing to init the msg_ctx isn't a fatal error. Only + root-level things (joining/leaving domains etc.) will be denied. */ + c->msg_ctx = messaging_init(c, procid_self(), event_context_init(c)); - if (c->msg_ctx == NULL) { - exit(1); - } rc = net_run_function(c, argc_new-1, argv_new+1, "net", net_func); diff --git a/source3/utils/net_ads.c b/source3/utils/net_ads.c index 858830f3c1..0b2165d73f 100644 --- a/source3/utils/net_ads.c +++ b/source3/utils/net_ads.c @@ -968,6 +968,12 @@ static int net_ads_leave(struct net_context *c, int argc, const char **argv) use_in_memory_ccache(); } + if (!c->msg_ctx) { + d_fprintf(stderr, _("Could not initialise message context. " + "Try running as root\n")); + return -1; + } + werr = libnet_init_UnjoinCtx(ctx, &r); if (!W_ERROR_IS_OK(werr)) { d_fprintf(stderr, _("Could not initialise unjoin context.\n")); @@ -1348,6 +1354,13 @@ int net_ads_join(struct net_context *c, int argc, const char **argv) goto fail; } + if (!c->msg_ctx) { + d_fprintf(stderr, _("Could not initialise message context. " + "Try running as root\n")); + werr = WERR_ACCESS_DENIED; + goto fail; + } + /* Do the domain join here */ r->in.domain_name = domain; diff --git a/source3/utils/net_lookup.c b/source3/utils/net_lookup.c index 0a85da346f..2afa75c609 100644 --- a/source3/utils/net_lookup.c +++ b/source3/utils/net_lookup.c @@ -410,6 +410,12 @@ static int net_lookup_dsgetdcname(struct net_context *c, int argc, const char ** site_name = argv[2]; } + if (!c->msg_ctx) { + d_fprintf(stderr, _("Could not initialise message context. " + "Try running as root\n")); + return -1; + } + status = dsgetdcname(mem_ctx, c->msg_ctx, domain_name, NULL, site_name, flags, &info); if (!NT_STATUS_IS_OK(status)) { |