diff options
-rw-r--r-- | source3/rpc_client/cli_netlogon.c | 7 | ||||
-rw-r--r-- | source3/rpcclient/cmd_netlogon.c | 18 |
2 files changed, 17 insertions, 8 deletions
diff --git a/source3/rpc_client/cli_netlogon.c b/source3/rpc_client/cli_netlogon.c index 28395de067..0fdc476775 100644 --- a/source3/rpc_client/cli_netlogon.c +++ b/source3/rpc_client/cli_netlogon.c @@ -733,6 +733,7 @@ NTSTATUS rpccli_netlogon_sam_logon(struct rpc_pipe_client *cli, const char *domain, const char *username, const char *password, + const char *workstation, int logon_type) { prs_struct qbuf, rbuf; @@ -750,7 +751,11 @@ NTSTATUS rpccli_netlogon_sam_logon(struct rpc_pipe_client *cli, ZERO_STRUCT(r); ZERO_STRUCT(ret_creds); - fstr_sprintf( clnt_name_slash, "\\\\%s", global_myname() ); + if (workstation) { + fstr_sprintf( clnt_name_slash, "\\\\%s", workstation ); + } else { + fstr_sprintf( clnt_name_slash, "\\\\%s", global_myname() ); + } /* Initialise input parameters */ diff --git a/source3/rpcclient/cmd_netlogon.c b/source3/rpcclient/cmd_netlogon.c index a1093d693f..5a2dd00f98 100644 --- a/source3/rpcclient/cmd_netlogon.c +++ b/source3/rpcclient/cmd_netlogon.c @@ -338,11 +338,12 @@ static NTSTATUS cmd_netlogon_sam_logon(struct rpc_pipe_client *cli, const char *username, *password; int auth_level = 2; uint32 logon_param = 0; + const char *workstation = NULL; /* Check arguments */ if (argc < 3 || argc > 6) { - fprintf(stderr, "Usage: samlogon <username> <password> " + fprintf(stderr, "Usage: samlogon <username> <password> [workstation]" "[logon_type (1 or 2)] [auth level (2 or 3)] [logon_parameter]\n"); return NT_STATUS_OK; } @@ -350,18 +351,21 @@ static NTSTATUS cmd_netlogon_sam_logon(struct rpc_pipe_client *cli, username = argv[1]; password = argv[2]; - if (argc >= 4) - sscanf(argv[3], "%i", &logon_type); + if (argc >= 4) + workstation = argv[3]; if (argc >= 5) - sscanf(argv[4], "%i", &auth_level); + sscanf(argv[4], "%i", &logon_type); - if (argc == 6) - sscanf(argv[5], "%x", &logon_param); + if (argc >= 6) + sscanf(argv[5], "%i", &auth_level); + + if (argc == 7) + sscanf(argv[6], "%x", &logon_param); /* Perform the sam logon */ - result = rpccli_netlogon_sam_logon(cli, mem_ctx, logon_param, lp_workgroup(), username, password, logon_type); + result = rpccli_netlogon_sam_logon(cli, mem_ctx, logon_param, lp_workgroup(), username, password, workstation, logon_type); if (!NT_STATUS_IS_OK(result)) goto done; |