aboutsummaryrefslogtreecommitdiffstats
path: root/agent
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>2020-09-09 18:33:06 +0000
committerWerner Koch <[email protected]>2020-09-09 18:34:59 +0000
commit8ed85ef3de9cdeee86e281a8b46be1bd49a36e7a (patch)
tree947d8f12edf65d7db0707659087780f17fc0d7ad /agent
parentkbx: Change X.509 S/N search definition. (diff)
downloadgnupg-8ed85ef3de9cdeee86e281a8b46be1bd49a36e7a.tar.gz
gnupg-8ed85ef3de9cdeee86e281a8b46be1bd49a36e7a.zip
agent: Keep some permissions of private-keys-v1.d.
* common/sysutils.c (modestr_to_mode): Re-implement. (gnupg_chmod): Support keeping of permissions. -- GnuPG-bug-id: 2312
Diffstat (limited to 'agent')
-rw-r--r--agent/gpg-agent.c16
1 files changed, 13 insertions, 3 deletions
diff --git a/agent/gpg-agent.c b/agent/gpg-agent.c
index bbad80074..f167c96db 100644
--- a/agent/gpg-agent.c
+++ b/agent/gpg-agent.c
@@ -2273,10 +2273,20 @@ create_private_keys_directory (const char *home)
fname, strerror (errno) );
else if (!opt.quiet)
log_info (_("directory '%s' created\n"), fname);
+
+ if (gnupg_chmod (fname, "-rwx"))
+ log_error (_("can't set permissions of '%s': %s\n"),
+ fname, strerror (errno));
+ }
+ else
+ {
+ /* The file exists or another error. Make sure we have sensible
+ * permissions. We enforce rwx for user but keep existing group
+ * permissions. Permissions for other are always cleared. */
+ if (gnupg_chmod (fname, "-rwx...---"))
+ log_error (_("can't set permissions of '%s': %s\n"),
+ fname, strerror (errno));
}
- if (gnupg_chmod (fname, "-rwx"))
- log_error (_("can't set permissions of '%s': %s\n"),
- fname, strerror (errno));
xfree (fname);
}