r9171: - support putting a credentials object in a rpc pipe object to allow authentic...
authorAndrew Tridgell <tridge@samba.org>
Sun, 7 Aug 2005 06:13:55 +0000 (06:13 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 18:31:27 +0000 (13:31 -0500)
  with other than the command line credentials in a rpc pipe
(This used to be commit aae05ebc9c3dc7ad367aed09c54b85184ba7a82e)

source4/scripting/ejs/mprutil.c
source4/scripting/ejs/smbcalls_rpc.c

index 657078e7c79a125d324863991f67fb05a1a765e9..748f28c6816c2616a3f29bcfe6b2218a5a485a69 100644 (file)
@@ -357,15 +357,14 @@ void mprSetPtrChild(struct MprVar *v, const char *propname, const void *p)
 */
 void *mprGetPtr(struct MprVar *v, const char *propname)
 {
-       struct MprVar *val;
-       val = mprGetProperty(v, propname, NULL);
-       if (val == NULL) {
+       NTSTATUS status = mprGetVar(&v, propname);
+       if (!NT_STATUS_IS_OK(status)) {
                return NULL;
        }
-       if (val->type != MPR_TYPE_PTR) {
+       if (v->type != MPR_TYPE_PTR) {
                return NULL;
        }
-       return val->ptr;
+       return v->ptr;
 }
 
 /*
index 8a08ba0d8d8eb52941e83aae0013ed0b301f4291..f5b71b67152af5dde4027e372828d5835ff7a6eb 100644 (file)
@@ -109,7 +109,7 @@ static int ejs_rpc_connect(MprVarHandle eid, int argc, char **argv)
        const struct dcerpc_interface_table *iface;
        NTSTATUS status;
        struct dcerpc_pipe *p;
-       struct cli_credentials *creds = cmdline_credentials;
+       struct cli_credentials *creds;
        struct event_context *ev;
        struct MprVar *this = mprGetProperty(ejsGetLocalObject(eid), "this", 0);
 
@@ -137,11 +137,14 @@ static int ejs_rpc_connect(MprVarHandle eid, int argc, char **argv)
                goto done;
        }
 
+       creds = mprGetPtr(this, "credentials.creds");
+       if (creds == NULL) {
+               creds = cmdline_credentials;
+       }
        if (creds == NULL) {
                creds = cli_credentials_init(mprMemCtx());
                cli_credentials_guess(creds);
-               cli_credentials_set_username(creds, "", CRED_GUESSED);
-               cli_credentials_set_password(creds, "", CRED_GUESSED);
+               cli_credentials_set_anonymous(creds);
        }
 
        ev = talloc_find_parent_bytype(mprMemCtx(), struct event_context);
@@ -157,7 +160,6 @@ static int ejs_rpc_connect(MprVarHandle eid, int argc, char **argv)
        /* by making the pipe a child of the connection variable, it will
           auto close when it goes out of scope in the script */
        mprSetPtrChild(this, "pipe", p);
-       mprSetPtr(this, "iface", iface);
 
 done:
        mpr_Return(eid, mprNTSTATUS(status));
@@ -353,7 +355,6 @@ done:
        return 0;
 }
 
-
 /* a list of registered ejs rpc modules */
 static struct ejs_register {
        struct ejs_register *next, *prev;