summaryrefslogtreecommitdiffstats
path: root/g10/ringedit.c
diff options
context:
space:
mode:
authorWerner Koch <wk@gnupg.org>1998-08-07 10:53:38 +0200
committerWerner Koch <wk@gnupg.org>1998-08-07 10:53:38 +0200
commit6d21f2838dcfee933f4c430fba68ba8ada3abd50 (patch)
treeecf44aec40a55d3fd46fc6a6d96bb3afa7901029 /g10/ringedit.c
parentadd salted and iterated mode (diff)
downloadgnupg2-6d21f2838dcfee933f4c430fba68ba8ada3abd50.tar.xz
gnupg2-6d21f2838dcfee933f4c430fba68ba8ada3abd50.zip
chnages done at the train
Diffstat (limited to 'g10/ringedit.c')
-rw-r--r--g10/ringedit.c26
1 files changed, 18 insertions, 8 deletions
diff --git a/g10/ringedit.c b/g10/ringedit.c
index 58eb6d6d9..6f505ef2a 100644
--- a/g10/ringedit.c
+++ b/g10/ringedit.c
@@ -55,6 +55,7 @@
#include "mpi.h"
#include "iobuf.h"
#include "keydb.h"
+#include "i18n.h"
#include <unistd.h> /* for truncate */
@@ -865,14 +866,16 @@ keyring_copy( KBPOS *kbpos, int mode, KBNODE root )
}
}
/* rename and make backup file */
- #if __MINGW32__
- remove( bakfname );
- #endif
- if( rename( rentry->fname, bakfname ) ) {
- log_error("%s: rename to %s failed: %s\n",
- rentry->fname, bakfname, strerror(errno) );
- rc = G10ERR_RENAME_FILE;
- goto leave;
+ if( !rentry->secret ) { /* but not for secret keyrings */
+ #if __MINGW32__
+ remove( bakfname );
+ #endif
+ if( rename( rentry->fname, bakfname ) ) {
+ log_error("%s: rename to %s failed: %s\n",
+ rentry->fname, bakfname, strerror(errno) );
+ rc = G10ERR_RENAME_FILE;
+ goto leave;
+ }
}
#if __MINGW32__
remove( rentry->fname );
@@ -881,6 +884,13 @@ keyring_copy( KBPOS *kbpos, int mode, KBNODE root )
log_error("%s: rename to %s failed: %s\n",
tmpfname, rentry->fname,strerror(errno) );
rc = G10ERR_RENAME_FILE;
+ if( rentry->secret ) {
+ log_info(_(
+ "Warning: 2 files with confidential information exists.\n"));
+ log_info(_("%s is the unchanged one\n"), rentry->fname );
+ log_info(_("%s is the new one\n"), tmpfname );
+ log_info(_("Please fix this possible security flaw\n"));
+ }
goto leave;
}