From 18f3197808c894fa76cc3a1b04550b3ce1be79f3 Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Sun, 7 Feb 2021 14:38:34 +0100 Subject: [PATCH] rpcclient: Factor out cmd_set_auth() sign, seal and packet did exactly the same wrt authentication Signed-off-by: Volker Lendecke Reviewed-by: Jeremy Allison --- source3/rpcclient/rpcclient.c | 94 ++++++++--------------------------- 1 file changed, 21 insertions(+), 73 deletions(-) diff --git a/source3/rpcclient/rpcclient.c b/source3/rpcclient/rpcclient.c index cba62c9433e..3ed8ede09fd 100644 --- a/source3/rpcclient/rpcclient.c +++ b/source3/rpcclient/rpcclient.c @@ -332,16 +332,15 @@ static NTSTATUS cmd_set_transport(void) return NT_STATUS_OK; } -static NTSTATUS cmd_sign( +static NTSTATUS cmd_set_auth( struct dcerpc_binding *binding, - TALLOC_CTX *mem_ctx, + const char *display_string, int argc, const char **argv) { const char *p = "[KRB5|KRB5_SPNEGO|NTLMSSP|NTLMSSP_SPNEGO|SCHANNEL]"; const char *type = "NTLMSSP"; - pipe_default_auth_level = DCERPC_AUTH_LEVEL_INTEGRITY; pipe_default_auth_type = DCERPC_AUTH_TYPE_NTLMSSP; if (argc > 2) { @@ -370,52 +369,33 @@ static NTSTATUS cmd_sign( } } - d_printf("Setting %s - sign\n", type); + d_printf("Setting %s - %s\n", type, display_string); return cmd_set_ss_level(); } -static NTSTATUS cmd_seal( +static NTSTATUS cmd_sign( struct dcerpc_binding *binding, TALLOC_CTX *mem_ctx, int argc, const char **argv) { - const char *p = "[KRB5|KRB5_SPNEGO|NTLMSSP|NTLMSSP_SPNEGO|SCHANNEL]"; - const char *type = "NTLMSSP"; + NTSTATUS status; + pipe_default_auth_level = DCERPC_AUTH_LEVEL_INTEGRITY; + status = cmd_set_auth(binding, "sign", argc, argv); + return status; +} +static NTSTATUS cmd_seal( + struct dcerpc_binding *binding, + TALLOC_CTX *mem_ctx, + int argc, + const char **argv) +{ + NTSTATUS status; pipe_default_auth_level = DCERPC_AUTH_LEVEL_PRIVACY; - pipe_default_auth_type = DCERPC_AUTH_TYPE_NTLMSSP; - - if (argc > 2) { - printf("Usage: %s %s\n", argv[0], p); - return NT_STATUS_OK; - } - - if (argc == 2) { - type = argv[1]; - if (strequal(type, "KRB5")) { - pipe_default_auth_type = DCERPC_AUTH_TYPE_KRB5; - } else if (strequal(type, "KRB5_SPNEGO")) { - pipe_default_auth_type = DCERPC_AUTH_TYPE_SPNEGO; - pipe_default_auth_spnego_type = PIPE_AUTH_TYPE_SPNEGO_KRB5; - } else if (strequal(type, "NTLMSSP")) { - pipe_default_auth_type = DCERPC_AUTH_TYPE_NTLMSSP; - } else if (strequal(type, "NTLMSSP_SPNEGO")) { - pipe_default_auth_type = DCERPC_AUTH_TYPE_SPNEGO; - pipe_default_auth_spnego_type = PIPE_AUTH_TYPE_SPNEGO_NTLMSSP; - } else if (strequal(type, "SCHANNEL")) { - pipe_default_auth_type = DCERPC_AUTH_TYPE_SCHANNEL; - } else { - printf("unknown type %s\n", type); - printf("Usage: %s %s\n", argv[0], p); - return NT_STATUS_INVALID_LEVEL; - } - } - - d_printf("Setting %s - sign and seal\n", type); - - return cmd_set_ss_level(); + status = cmd_set_auth(binding, "sign and seal", argc, argv); + return status; } static NTSTATUS cmd_packet( @@ -424,44 +404,12 @@ static NTSTATUS cmd_packet( int argc, const char **argv) { - const char *p = "[KRB5|KRB5_SPNEGO|NTLMSSP|NTLMSSP_SPNEGO|SCHANNEL]"; - const char *type = "NTLMSSP"; - + NTSTATUS status; pipe_default_auth_level = DCERPC_AUTH_LEVEL_PACKET; - pipe_default_auth_type = DCERPC_AUTH_TYPE_NTLMSSP; - - if (argc > 2) { - printf("Usage: %s %s\n", argv[0], p); - return NT_STATUS_OK; - } - - if (argc == 2) { - type = argv[1]; - if (strequal(type, "KRB5")) { - pipe_default_auth_type = DCERPC_AUTH_TYPE_KRB5; - } else if (strequal(type, "KRB5_SPNEGO")) { - pipe_default_auth_type = DCERPC_AUTH_TYPE_SPNEGO; - pipe_default_auth_spnego_type = PIPE_AUTH_TYPE_SPNEGO_KRB5; - } else if (strequal(type, "NTLMSSP")) { - pipe_default_auth_type = DCERPC_AUTH_TYPE_NTLMSSP; - } else if (strequal(type, "NTLMSSP_SPNEGO")) { - pipe_default_auth_type = DCERPC_AUTH_TYPE_SPNEGO; - pipe_default_auth_spnego_type = PIPE_AUTH_TYPE_SPNEGO_NTLMSSP; - } else if (strequal(type, "SCHANNEL")) { - pipe_default_auth_type = DCERPC_AUTH_TYPE_SCHANNEL; - } else { - printf("unknown type %s\n", type); - printf("Usage: %s %s\n", argv[0], p); - return NT_STATUS_INVALID_LEVEL; - } - } - - d_printf("Setting %s - packet\n", type); - - return cmd_set_ss_level(); + status = cmd_set_auth(binding, "packet", argc, argv); + return status; } - static NTSTATUS cmd_timeout(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, int argc, const char **argv) { -- 2.47.3