mirror of
git://git.gnupg.org/gnupg.git
synced 2025-07-02 22:46:30 +02:00
Show passphrase constraints errors as password prompt errors
* agent/agent.h (check_passphrase_constraints): Add parameter failed_constraint and remove parameter silent. Update callers. * agent/genkey.c (check_passphrase_constraints): Add parameter failed_constraint and remove parameter silent. If FAILED_CONSTRAINT is not NULL and OPT.ENFORCE_PASSPHRASE_CONSTRAINTS is FALSE, save the error text in *FAILED_CONSTRAINT and don't call take_this_one_anyway or take_this_one_anyway2. If FAILED_CONSTRAINT is NULL, act as if SILENT was set. (agent_ask_new_passphrase): Change initial_errtext's type from a const char * to a char *. Pass it to check_passphrase_constraints. If it contains malloc's memory, free it. -- Signed-off-by: Neal H. Walfield <neal@g10code.com> Based on a patch provided by Watson Yuuma Sato <yuuma.sato@gmail.com> in issue 2018.
This commit is contained in:
parent
0416aed4ab
commit
2778c6f8f4
4 changed files with 49 additions and 25 deletions
|
@ -1,6 +1,7 @@
|
|||
/* command.c - gpg-agent command handler
|
||||
* Copyright (C) 2001-2011 Free Software Foundation, Inc.
|
||||
* Copyright (C) 2001-2013 Werner Koch
|
||||
* Copyright (C) 2015 g10 Code GmbH.
|
||||
*
|
||||
* This file is part of GnuPG.
|
||||
*
|
||||
|
@ -1438,7 +1439,7 @@ cmd_get_passphrase (assuan_context_t ctx, char *line)
|
|||
char *p;
|
||||
int opt_data, opt_check, opt_no_ask, opt_qualbar;
|
||||
int opt_repeat = 0;
|
||||
char *repeat_errtext = NULL;
|
||||
char *entry_errtext = NULL;
|
||||
|
||||
if (ctrl->restricted)
|
||||
return leave_cmd (ctx, gpg_error (GPG_ERR_FORBIDDEN));
|
||||
|
@ -1522,15 +1523,16 @@ cmd_get_passphrase (assuan_context_t ctx, char *line)
|
|||
|
||||
next_try:
|
||||
rc = agent_get_passphrase (ctrl, &response, desc, prompt,
|
||||
repeat_errtext? repeat_errtext:errtext,
|
||||
entry_errtext? entry_errtext:errtext,
|
||||
opt_qualbar, cacheid, CACHE_MODE_USER);
|
||||
xfree (repeat_errtext);
|
||||
repeat_errtext = NULL;
|
||||
xfree (entry_errtext);
|
||||
entry_errtext = NULL;
|
||||
if (!rc)
|
||||
{
|
||||
int i;
|
||||
|
||||
if (opt_check && check_passphrase_constraints (ctrl, response, 0))
|
||||
if (opt_check
|
||||
&& check_passphrase_constraints (ctrl, response, &entry_errtext))
|
||||
{
|
||||
xfree (response);
|
||||
goto next_try;
|
||||
|
@ -1548,9 +1550,9 @@ cmd_get_passphrase (assuan_context_t ctx, char *line)
|
|||
{
|
||||
xfree (response2);
|
||||
xfree (response);
|
||||
repeat_errtext = try_percent_escape
|
||||
entry_errtext = try_percent_escape
|
||||
(_("does not match - try again"), NULL);
|
||||
if (!repeat_errtext)
|
||||
if (!entry_errtext)
|
||||
{
|
||||
rc = gpg_error_from_syserror ();
|
||||
break;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue