git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH 6/6] Use git_mkstemp_mode instead of plain mkstemp to create object files

From
Matthieu Moy <matthieu.moy@imag.fr>
Date
Feb 22, 2010, 22:32 UTC
Message-ID
<1266877936-13537-7-git-send-email-Matthieu.Moy@imag.fr>
In-Reply-To
<1266597207-32036-1-git-send-email-Matthieu.Moy@imag.fr>

We used to unnecessarily give the read permission to group and others, regardless of the umask, which isn't serious because the objects are still protected by their containing directory, but isn't necessary either.

Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
---
 sha1_file.c            |    6 +++---
 t/t1304-default-acl.sh |    2 +-
 2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/sha1_file.c b/sha1_file.c
index 657825e..3316f28 100644
--- a/sha1_file.c
+++ b/sha1_file.c
@@ -2206,7 +2206,7 @@ int move_temp_to_file(const char *tmpfile, const char *filename)
 	}
 
 out:
-	if (set_shared_perm(filename, (S_IFREG|0444)))
+	if (adjust_shared_perm(filename))
 		return error("unable to set permission to '%s'", filename);
 	return 0;
 }
@@ -2262,7 +2262,7 @@ static int create_tmpfile(char *buffer, size_t bufsiz, const char *filename)
 	}
 	memcpy(buffer, filename, dirlen);
 	strcpy(buffer + dirlen, "tmp_obj_XXXXXX");
-	fd = mkstemp(buffer);
+	fd = git_mkstemp_mode(buffer, 0444);
 	if (fd < 0 && dirlen && errno == ENOENT) {
 		/* Make sure the directory exists */
 		memcpy(buffer, filename, dirlen);
@@ -2272,7 +2272,7 @@ static int create_tmpfile(char *buffer, size_t bufsiz, const char *filename)
 
 		/* Try again */
 		strcpy(buffer + dirlen - 1, "/tmp_obj_XXXXXX");
-		fd = mkstemp(buffer);
+		fd = git_mkstemp_mode(buffer, 0444);
 	}
 	return fd;
 }
diff --git a/t/t1304-default-acl.sh b/t/t1304-default-acl.sh
index 8472dbb..cc30be4 100755
--- a/t/t1304-default-acl.sh
+++ b/t/t1304-default-acl.sh
@@ -54,7 +54,7 @@ test_expect_success 'Setup test repo' '
 	git commit -m "init"
 '
 
-test_expect_failure 'Objects creation does not break ACLs with restrictive umask' '
+test_expect_success 'Objects creation does not break ACLs with restrictive umask' '
 	# SHA1 for empty blob
 	check_perms_and_acl .git/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391
 '
-- 
1.7.0.54.gb6a04.dirty
Previous: Matthieu Moy
Message 18 of 18 in “Allow Git repositories to be shared using POSIX ACLs”
  1. 0/4 Allow Git repositories to be shared using POSIX ACLsMatthieu Moy, Feb 19, 2010
  2. 1/4 Add a testcase for ACL with restrictive umask.Matthieu Moy, Feb 19, 2010
  3. 2/4 Move gitmkstemps to path.cMatthieu Moy, Feb 19, 2010
  4. 3/4 git_mkstemp_mode, xmkstemp_mode: variants of gitmkstemps with mode argument.Matthieu Moy, Feb 19, 2010
  5. 4/4 Use git_mkstemp_mode and xmkstemp_mode in odb_mkstemp, not chmod later.Matthieu Moy, Feb 19, 2010
  6. Junio C HamanoFeb 20, 2010
  7. Matthieu MoyFeb 22, 2010
  8. Junio C HamanoFeb 22, 2010
  9. Junio C HamanoFeb 22, 2010
  10. Matthieu MoyFeb 22, 2010
  11. Junio C HamanoFeb 19, 2010
  12. 0/6 Allow Git repositories to be shared using POSIX ACLsMatthieu Moy, Feb 22, 2010
  13. 1/6 Add a testcase for ACL with restrictive umask.Matthieu Moy, Feb 22, 2010
  14. 2/6 Move gitmkstemps to path.cMatthieu Moy, Feb 22, 2010
  15. 3/6 git_mkstemp_mode, xmkstemp_mode: variants of gitmkstemps with mode argument.Matthieu Moy, Feb 22, 2010
  16. 4/6 Use git_mkstemp_mode and xmkstemp_mode in odb_mkstemp, not chmod later.Matthieu Moy, Feb 22, 2010
  17. 5/6 git_mkstemps_mode: don't set errno to EINVAL on exit.Matthieu Moy, Feb 22, 2010
  18. 6/6 Use git_mkstemp_mode instead of plain mkstemp to create object filesMatthieu Moy, Feb 22, 2010

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.