diff --git a/NEWS b/NEWS index 977df647f..09893127b 100644 --- a/NEWS +++ b/NEWS @@ -38,6 +38,9 @@ Noteworthy changes in version 2.0.10 (unreleased) * [w32] The gnupg2.nls directory is not anymore used. The standard locale directory is now used. + * [w32] Fixed a race condition bteween gpg and gpgsm in the use of + temporary file names. + * The gpg-preset-passphrase mechanism works again. * Admin PINs are cached again (bug in 2.0.9). diff --git a/kbx/ChangeLog b/kbx/ChangeLog index dc45e29a4..c91092858 100644 --- a/kbx/ChangeLog +++ b/kbx/ChangeLog @@ -1,3 +1,8 @@ +2008-11-20 Werner Koch + + * keybox-update.c (create_tmp_file) [USE_ONLY_8DOT3]: Use other + suffixes to avoid conflicts with gpg uses filenames. + 2008-11-11 Werner Koch * Makefile.am (kbxutil_LDADD): Change order of libs. diff --git a/kbx/keybox-file.c b/kbx/keybox-file.c index c10aa1681..e3c22bda8 100644 --- a/kbx/keybox-file.c +++ b/kbx/keybox-file.c @@ -1,4 +1,4 @@ -/* keybox-file.c - file oeprations +/* keybox-file.c - File operations * Copyright (C) 2001, 2003 Free Software Foundation, Inc. * * This file is part of GnuPG. diff --git a/kbx/keybox-update.c b/kbx/keybox-update.c index c29e31666..dfa7af346 100644 --- a/kbx/keybox-update.c +++ b/kbx/keybox-update.c @@ -75,7 +75,9 @@ create_tmp_file (const char *template, /* Here is another Windoze bug?: * you cant rename("pubring.kbx.tmp", "pubring.kbx"); * but rename("pubring.kbx.tmp", "pubring.aaa"); - * works. So we replace .kbx by .bak or .tmp + * works. So we replace ".kbx" by ".kb_" or ".k__". Note that we + * can't use ".bak" and ".tmp", because these suffixes are used by + * gpg and would lead to a sharing violation or data corruption. */ if (strlen (template) > 4 && !strcmp (template+strlen(template)-4, EXTSEP_S "kbx") ) @@ -84,7 +86,7 @@ create_tmp_file (const char *template, if (!bakfname) return gpg_error_from_syserror (); strcpy (bakfname, template); - strcpy (bakfname+strlen(template)-4, EXTSEP_S "bak"); + strcpy (bakfname+strlen(template)-4, EXTSEP_S "kb_"); tmpfname = xtrymalloc (strlen (template) + 1); if (!tmpfname) @@ -94,14 +96,15 @@ create_tmp_file (const char *template, return tmperr; } strcpy (tmpfname,template); - strcpy (tmpfname + strlen (template)-4, EXTSEP_S "tmp"); + strcpy (tmpfname + strlen (template)-4, EXTSEP_S "k__"); } else - { /* File does not end with kbx; hmmm. */ + { /* File does not end with kbx, thus we hope we are working on a + modern file system and appending a suffix works. */ bakfname = xtrymalloc ( strlen (template) + 5); if (!bakfname) return gpg_error_from_syserror (); - strcpy (stpcpy (bakfname, template), EXTSEP_S "bak"); + strcpy (stpcpy (bakfname, template), EXTSEP_S "kb_"); tmpfname = xtrymalloc ( strlen (template) + 5); if (!tmpfname) @@ -110,7 +113,7 @@ create_tmp_file (const char *template, xfree (bakfname); return tmperr; } - strcpy (stpcpy (tmpfname, template), EXTSEP_S "tmp"); + strcpy (stpcpy (tmpfname, template), EXTSEP_S "k__"); } # else /* Posix file names */ bakfname = xtrymalloc (strlen (template) + 2); diff --git a/sm/ChangeLog b/sm/ChangeLog index e33ba0bd9..37ef9e836 100644 --- a/sm/ChangeLog +++ b/sm/ChangeLog @@ -1,7 +1,7 @@ 2008-11-18 Werner Koch * gpgsm.c (make_libversion): New. - (my_strusage): Use new fucntion. + (my_strusage): Use new function. (build_lib_list): Remove. 2008-11-13 Werner Koch