Author: gd Date: 2007-07-19 13:07:22 +0000 (Thu, 19 Jul 2007) New Revision: 23968
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=23968 Log: Harmonize net's password prompts. Guenther Modified: branches/SAMBA_3_2/source/utils/net.c branches/SAMBA_3_2/source/utils/net_ads.c branches/SAMBA_3_2_0/source/utils/net.c branches/SAMBA_3_2_0/source/utils/net_ads.c Changeset: Modified: branches/SAMBA_3_2/source/utils/net.c =================================================================== --- branches/SAMBA_3_2/source/utils/net.c 2007-07-19 10:23:36 UTC (rev 23967) +++ branches/SAMBA_3_2/source/utils/net.c 2007-07-19 13:07:22 UTC (rev 23968) @@ -168,11 +168,9 @@ { NTSTATUS nt_status; - if (!opt_password && !opt_machine_pass) { - char *pass = getpass("Password:"); - if (pass) { - opt_password = SMB_STRDUP(pass); - } + opt_password = net_prompt_pass(opt_user_name); + if (!opt_password) { + return NT_STATUS_NO_MEMORY; } nt_status = cli_full_connection(c, NULL, server_name, @@ -180,7 +178,6 @@ service_name, service_type, opt_user_name, opt_workgroup, opt_password, 0, Undefined, NULL); - if (NT_STATUS_IS_OK(nt_status)) { return nt_status; } else { @@ -267,11 +264,9 @@ NTSTATUS nt_status; char *user_and_realm = NULL; - if (!opt_password && !opt_machine_pass) { - char *pass = getpass("Password:"); - if (pass) { - opt_password = SMB_STRDUP(pass); - } + opt_password = net_prompt_pass(opt_user_name); + if (!opt_password) { + return NT_STATUS_NO_MEMORY; } user_and_realm = get_user_and_realm(opt_user_name); @@ -834,6 +829,33 @@ return 0; } +/**************************************************************************** +****************************************************************************/ + +const char *net_prompt_pass(const char *user) +{ + char *prompt = NULL; + const char *pass = NULL; + + if (opt_password) { + return opt_password; + } + + if (opt_machine_pass) { + return NULL; + } + + asprintf(&prompt, "Enter %s's password:", user); + if (!prompt) { + return NULL; + } + + pass = getpass(prompt); + SAFE_FREE(prompt); + + return pass; +} + /* main function table */ static struct functable net_func[] = { {"RPC", net_rpc}, Modified: branches/SAMBA_3_2/source/utils/net_ads.c =================================================================== --- branches/SAMBA_3_2/source/utils/net_ads.c 2007-07-19 10:23:36 UTC (rev 23967) +++ branches/SAMBA_3_2/source/utils/net_ads.c 2007-07-19 13:07:22 UTC (rev 23968) @@ -244,14 +244,11 @@ retry: if (!opt_password && need_password && !opt_machine_pass) { - char *prompt = NULL; - asprintf(&prompt,"%s's password: ", opt_user_name); - if (!prompt) { + opt_password = net_prompt_pass(opt_user_name); + if (!opt_password) { ads_destroy(&ads); return ADS_ERROR(LDAP_NO_MEMORY); } - opt_password = getpass(prompt); - free(prompt); } if (opt_password) { Modified: branches/SAMBA_3_2_0/source/utils/net.c =================================================================== --- branches/SAMBA_3_2_0/source/utils/net.c 2007-07-19 10:23:36 UTC (rev 23967) +++ branches/SAMBA_3_2_0/source/utils/net.c 2007-07-19 13:07:22 UTC (rev 23968) @@ -168,11 +168,9 @@ { NTSTATUS nt_status; - if (!opt_password && !opt_machine_pass) { - char *pass = getpass("Password:"); - if (pass) { - opt_password = SMB_STRDUP(pass); - } + opt_password = net_prompt_pass(opt_user_name); + if (!opt_password) { + return NT_STATUS_NO_MEMORY; } nt_status = cli_full_connection(c, NULL, server_name, @@ -180,7 +178,6 @@ service_name, service_type, opt_user_name, opt_workgroup, opt_password, 0, Undefined, NULL); - if (NT_STATUS_IS_OK(nt_status)) { return nt_status; } else { @@ -267,11 +264,9 @@ NTSTATUS nt_status; char *user_and_realm = NULL; - if (!opt_password && !opt_machine_pass) { - char *pass = getpass("Password:"); - if (pass) { - opt_password = SMB_STRDUP(pass); - } + opt_password = net_prompt_pass(opt_user_name); + if (!opt_password) { + return NT_STATUS_NO_MEMORY; } user_and_realm = get_user_and_realm(opt_user_name); @@ -834,6 +829,33 @@ return 0; } +/**************************************************************************** +****************************************************************************/ + +const char *net_prompt_pass(const char *user) +{ + char *prompt = NULL; + const char *pass = NULL; + + if (opt_password) { + return opt_password; + } + + if (opt_machine_pass) { + return NULL; + } + + asprintf(&prompt, "Enter %s's password:", user); + if (!prompt) { + return NULL; + } + + pass = getpass(prompt); + SAFE_FREE(prompt); + + return pass; +} + /* main function table */ static struct functable net_func[] = { {"RPC", net_rpc}, Modified: branches/SAMBA_3_2_0/source/utils/net_ads.c =================================================================== --- branches/SAMBA_3_2_0/source/utils/net_ads.c 2007-07-19 10:23:36 UTC (rev 23967) +++ branches/SAMBA_3_2_0/source/utils/net_ads.c 2007-07-19 13:07:22 UTC (rev 23968) @@ -244,14 +244,11 @@ retry: if (!opt_password && need_password && !opt_machine_pass) { - char *prompt = NULL; - asprintf(&prompt,"%s's password: ", opt_user_name); - if (!prompt) { + opt_password = net_prompt_pass(opt_user_name); + if (!opt_password) { ads_destroy(&ads); return ADS_ERROR(LDAP_NO_MEMORY); } - opt_password = getpass(prompt); - free(prompt); } if (opt_password) {
