commit 769babb131e20c4d7ebe197cfc182bc76ea96c18
parent 9420a097388c8c90a4f534d3b5f8d4f6b7f195bd
Author: Hiltjo Posthuma <hiltjo@codemadness.org>
Date: Fri, 17 Nov 2017 16:12:12 +0100
fix file permissions for cachefile and respect umask(2)
Diffstat:
1 file changed, 10 insertions(+), 2 deletions(-)
diff --git a/stagit-gopher.c b/stagit-gopher.c
@@ -1,4 +1,5 @@
#include <sys/stat.h>
+#include <sys/types.h>
#include <err.h>
#include <errno.h>
@@ -1083,6 +1084,7 @@ main(int argc, char *argv[])
git_object *obj = NULL;
const git_oid *head = NULL;
const git_error *e = NULL;
+ mode_t mask;
FILE *fp, *fpread;
char path[PATH_MAX], repodirabs[PATH_MAX + 1], *p;
char tmppath[64] = "cache.XXXXXXXXXXXX", buf[BUFSIZ];
@@ -1256,8 +1258,14 @@ main(int argc, char *argv[])
fclose(fp);
/* rename new cache file on success */
- if (cachefile && rename(tmppath, cachefile))
- err(1, "rename: '%s' to '%s'", tmppath, cachefile);
+ if (cachefile) {
+ if (rename(tmppath, cachefile))
+ err(1, "rename: '%s' to '%s'", tmppath, cachefile);
+ umask((mask = umask(0)));
+ if (chmod(cachefile,
+ (S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH) & ~mask))
+ err(1, "chmod: '%s'", cachefile);
+ }
/* cleanup */
git_repository_free(repo);