diff --git a/agent/ChangeLog b/agent/ChangeLog index e6f83eebd..ebac90850 100644 --- a/agent/ChangeLog +++ b/agent/ChangeLog @@ -1,3 +1,10 @@ +2007-07-13 Werner Koch + + * genkey.c (check_passphrase_constraints): Require a confirmation + for an empty passphrase. + (agent_genkey, agent_protect_and_store): No need to repeat an + empty passphrase. + 2007-07-05 Werner Koch * call-scd.c (struct inq_needpin_s): New. @@ -89,7 +96,7 @@ * protect-tool.c (main) [W32]: Call pth_init. - * preset-passphrase.c (main) [W32]: Repalce the explicit Winsocket + * preset-passphrase.c (main) [W32]: Replace the explicit Winsocket init by a call to pth_init. * trustlist.c (initialize_module_trustlist): New. diff --git a/agent/call-pinentry.c b/agent/call-pinentry.c index 6d577ba02..ee01b4e15 100644 --- a/agent/call-pinentry.c +++ b/agent/call-pinentry.c @@ -206,12 +206,22 @@ start_pinentry (ctrl_t ctrl) if (opt.verbose) log_info ("starting a new PIN Entry\n"); - + +#ifdef HAVE_W32_SYSTEM + fflush (stdout); + fflush (stderr); +#endif if (fflush (NULL)) { gpg_error_t tmperr = gpg_error (gpg_err_code_from_errno (errno)); log_error ("error flushing pending output: %s\n", strerror (errno)); + /* At least Windows XP fails here with EBADF. According to docs + and Wine an fflush(NULL) is the same as _flushall. However + the Wime implementaion does not flush stdin,stdout and stderr + - see above. Lets try to ignore the error. */ +#ifndef HAVE_W32_SYSTEM return unlock_pinentry (tmperr); +#endif } if (!opt.pinentry_program || !*opt.pinentry_program) diff --git a/agent/genkey.c b/agent/genkey.c index 012675a7c..e160f453f 100644 --- a/agent/genkey.c +++ b/agent/genkey.c @@ -1,5 +1,5 @@ /* pksign.c - Generate a keypair - * Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc. + * Copyright (C) 2002, 2003, 2004, 2007 Free Software Foundation, Inc. * * This file is part of GnuPG. * @@ -102,6 +102,20 @@ check_passphrase_constraints (ctrl_t ctrl, const char *pw) return err; } + if (!*pw) + { + const char *desc = _("You have not entered a passphrase - " + "this is in general a bad idea!%0A" + "Please confirm that you do not want to " + "have any protection on your key."); + + err = agent_get_confirmation (ctrl, desc, + _("Yes, protection is not needed"), + _("Enter new passphrase")); + if (err) + return err; + } + return 0; } @@ -166,12 +180,15 @@ agent_genkey (ctrl_t ctrl, const char *keyparam, size_t keyparamlen, pi2->failed_tries = 0; goto next_try; } - rc = agent_askpin (ctrl, text2, NULL, NULL, pi2); - if (rc == -1) - { /* The re-entered one did not match and the user did not - hit cancel. */ - initial_errtext = _("does not match - try again"); - goto next_try; + if (pi->pin && *pi->pin) + { + rc = agent_askpin (ctrl, text2, NULL, NULL, pi2); + if (rc == -1) + { /* The re-entered one did not match and the user did not + hit cancel. */ + initial_errtext = _("does not match - try again"); + goto next_try; + } } } if (rc) @@ -284,12 +301,16 @@ agent_protect_and_store (ctrl_t ctrl, gcry_sexp_t s_skey) pi2->failed_tries = 0; goto next_try; } - rc = agent_askpin (ctrl, text2, NULL, NULL, pi2); - if (rc == -1) - { /* The re-entered one did not match and the user did not - hit cancel. */ - initial_errtext = _("does not match - try again"); - goto next_try; + /* Unless the passphrase is empty, ask to confirm it. */ + if (pi->pin && *pi->pin) + { + rc = agent_askpin (ctrl, text2, NULL, NULL, pi2); + if (rc == -1) + { /* The re-entered one did not match and the user did not + hit cancel. */ + initial_errtext = _("does not match - try again"); + goto next_try; + } } } if (rc) diff --git a/common/ChangeLog b/common/ChangeLog index 7dd887cdc..8c7828a05 100644 --- a/common/ChangeLog +++ b/common/ChangeLog @@ -1,3 +1,7 @@ +2007-07-16 Werner Koch + + * estream.c (es_func_file_create): Clear NO_CLOSE flag. + 2007-07-12 Werner Koch * sysutils.h (gnupg_fd_t): New. diff --git a/common/estream.c b/common/estream.c index f43690d0a..06c624401 100644 --- a/common/estream.c +++ b/common/estream.c @@ -861,6 +861,7 @@ es_func_file_create (void **cookie, int *filedes, #endif file_cookie->fd = fd; + file_cookie->no_close = 0; *cookie = file_cookie; *filedes = fd; diff --git a/common/exechelp.c b/common/exechelp.c index 44e6e837d..6883c2aa4 100644 --- a/common/exechelp.c +++ b/common/exechelp.c @@ -358,10 +358,7 @@ gnupg_spawn_process (const char *pgmname, const char *argv[], if (x == -1) log_error ("failed to translate osfhandle %p\n", (void*)rp[0] ); else - { - log_debug ("_open_osfhandle %p yields %d\n", (void*)fd, x ); - *statusfile = fdopen (x, "r"); - } + *statusfile = fdopen (x, "r"); } if (!*statusfile) { diff --git a/common/simple-pwquery.c b/common/simple-pwquery.c index 6381b9928..13617d2b9 100644 --- a/common/simple-pwquery.c +++ b/common/simple-pwquery.c @@ -327,9 +327,6 @@ agent_open (int *rfd) { #ifdef SPWQ_USE_LOGGING log_error ( _("malformed GPG_AGENT_INFO environment variable\n")); - log_debug ( "a='%s'\n", infostr); - log_debug ( "a='%s'\n", strchr ( infostr, PATHSEP_C)); - log_debug ( "a=%td\n", (p-infostr)); #endif return SPWQ_NO_AGENT; } diff --git a/sm/ChangeLog b/sm/ChangeLog index 2b0b820bb..1736b6213 100644 --- a/sm/ChangeLog +++ b/sm/ChangeLog @@ -1,3 +1,8 @@ +2007-07-16 Werner Koch + + * server.c (cmd_message): Use gnupg_fd_t to avoid dependecy on + newer assuan versions. + 2007-07-12 Werner Koch * gpgsm.c (check_special_filename): Use translate_sys2libc_fd_int diff --git a/sm/server.c b/sm/server.c index f301dd301..9896728aa 100644 --- a/sm/server.c +++ b/sm/server.c @@ -734,7 +734,7 @@ static int cmd_message (assuan_context_t ctx, char *line) { int rc; - assuan_fd_t sysfd; + gnupg_fd_t sysfd; int fd; ctrl_t ctrl = assuan_get_pointer (ctx);