s3:net: Use messaging_init_client()
authorAndreas Schneider <asn@samba.org>
Mon, 14 Nov 2016 08:54:53 +0000 (09:54 +0100)
committerJeremy Allison <jra@samba.org>
Tue, 15 Nov 2016 23:20:06 +0000 (00:20 +0100)
Pair-Programmed-With: Jeremy Allison <jra@samba.org>
Signed-off-by: Andreas Schneider <asn@samba.org>
Signed-off-by: Jeremy Allison <jra@samba.org>
source3/utils/net.c

index 3d0940d164cbc68b74053812e52e2ca06f064721..beb8760bda8f0fecf05416defd06136064ef4ca9 100644 (file)
@@ -786,6 +786,7 @@ static struct functable net_func[] = {
        poptContext pc;
        TALLOC_CTX *frame = talloc_stackframe();
        struct net_context *c = talloc_zero(frame, struct net_context);
+       NTSTATUS status;
 
        struct poptOption long_options[] = {
                {"help",        'h', POPT_ARG_NONE,   0, 'h'},
@@ -905,11 +906,22 @@ static struct functable net_func[] = {
                exit(1);
        }
 
-       /*
-        * 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, samba_tevent_context_init(c));
+       status = messaging_init_client(c,
+                                      samba_tevent_context_init(c),
+                                      &c->msg_ctx);
+       if (geteuid() != 0 &&
+                       NT_STATUS_EQUAL(status, NT_STATUS_ACCESS_DENIED)) {
+               /*
+                * Normal to fail to initialize messaging context
+                * if we're not root as we don't have ability to
+                * read lock directory.
+                */
+               DBG_NOTICE("Unable to initialize messaging context. "
+                       "Must be root to do that.\n");
+       } else if (!NT_STATUS_IS_OK(status)) {
+               d_fprintf(stderr, "Failed to init messaging context\n");
+               exit(1);
+       }
 
        if (!lp_load_global(get_dyn_CONFIGFILE())) {
                d_fprintf(stderr, "Can't load %s - run testparm to debug it\n",