Every time an option is set, the config file protection mode is changed to 0666 & ~umask even if it was different before. This patch is useful if people store passwords (SMTP server in the StGit case) and do not want others to read the .gitconfig file. Signed-off-by: Catalin Marinas <catalin.marinas@xxxxxxx> --- lockfile.c | 6 +++++- 1 files changed, 5 insertions(+), 1 deletions(-) diff --git a/lockfile.c b/lockfile.c index eb931ed..87ee233 100644 --- a/lockfile.c +++ b/lockfile.c @@ -124,8 +124,12 @@ static char *resolve_symlink(char *p, size_t s) static int lock_file(struct lock_file *lk, const char *path, int flags) { + struct stat st; + if (strlen(path) >= sizeof(lk->filename)) return -1; + if (stat(path, &st) < 0) + st.st_mode = 0666; strcpy(lk->filename, path); /* * subtract 5 from size to make sure there's room for adding @@ -134,7 +138,7 @@ static int lock_file(struct lock_file *lk, const char *path, int flags) if (!(flags & LOCK_NODEREF)) resolve_symlink(lk->filename, sizeof(lk->filename)-5); strcat(lk->filename, ".lock"); - lk->fd = open(lk->filename, O_RDWR | O_CREAT | O_EXCL, 0666); + lk->fd = open(lk->filename, O_RDWR | O_CREAT | O_EXCL, st.st_mode); if (0 <= lk->fd) { if (!lock_file_list) { sigchain_push_common(remove_lock_file_on_signal); -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html