diff options
Diffstat (limited to 'source3/rpcclient/cmd_epmapper.c')
-rw-r--r-- | source3/rpcclient/cmd_epmapper.c | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/source3/rpcclient/cmd_epmapper.c b/source3/rpcclient/cmd_epmapper.c index 7753df24709..289b086718f 100644 --- a/source3/rpcclient/cmd_epmapper.c +++ b/source3/rpcclient/cmd_epmapper.c @@ -42,10 +42,13 @@ static NTSTATUS cmd_epmapper_map(struct rpc_pipe_client *p, const char *interface_name = "lsarpc"; enum dcerpc_transport_t transport = NCACN_NP; bool ok = false; + struct GUID object_uuid = GUID_zero(); - if (argc > 3) { - d_fprintf(stderr, "Usage: %s [interface_name] [transport]\n", - argv[0]); + if (argc > 4) { + d_fprintf(stderr, + "Usage: %s [interface_name] [transport] " + "[object_uuid]\n", + argv[0]); return NT_STATUS_OK; } @@ -79,6 +82,13 @@ static NTSTATUS cmd_epmapper_map(struct rpc_pipe_client *p, } } + if (argc >= 4) { + status = GUID_from_string(argv[3], &object_uuid); + if (!NT_STATUS_IS_OK(status)) { + goto done; + } + } + /* 127.0.0.1[0] => correct? needed? */ status = dcerpc_parse_binding(tmp_ctx, "ncacn_np:127.0.0.1[0]", &map_binding); @@ -115,7 +125,7 @@ static NTSTATUS cmd_epmapper_map(struct rpc_pipe_client *p, ZERO_STRUCT(entry_handle); status = dcerpc_epm_Map( - b, tmp_ctx, &abstract_syntax.uuid, + b, tmp_ctx, &object_uuid, &map_tower, &entry_handle, ARRAY_SIZE(towers), &num_towers, towers, &result); if (!NT_STATUS_IS_OK(status)) { |