diff options
Diffstat (limited to 'kbx')
-rw-r--r-- | kbx/ChangeLog | 5 | ||||
-rw-r--r-- | kbx/keybox-file.c | 2 | ||||
-rw-r--r-- | kbx/keybox-update.c | 15 |
3 files changed, 15 insertions, 7 deletions
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 <[email protected]> + + * keybox-update.c (create_tmp_file) [USE_ONLY_8DOT3]: Use other + suffixes to avoid conflicts with gpg uses filenames. + 2008-11-11 Werner Koch <[email protected]> * 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); |