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

Re: [PATCH 6/5] NUL hack to create_file()

From
Daniel Barkalow <barkalow@iabervon.org>
Date
May 29, 2008, 15:55 UTC
Message-ID
<alpine.LNX.1.00.0805291145230.19665@iabervon.org>
In-Reply-To
<1212020246-26480-7-git-send-email-gitster@pobox.com>
On Wed, 28 May 2008, Junio C Hamano wrote:
> This is not meant for application to the mainline.  It allows your git to
> refuse to create a blob whose name is "nul".

I assume this is so you can test git's response to a defective filesystem without actually having a defective filesystem?

Show 17 quoted lines
> ---
>  entry.c |    8 ++++++++
>  1 files changed, 8 insertions(+), 0 deletions(-)
> 
> diff --git a/entry.c b/entry.c
> index 222aaa3..d24b803 100644
> --- a/entry.c
> +++ b/entry.c
> @@ -81,6 +81,14 @@ static void remove_subtree(const char *path)
>  
>  static int create_file(const char *path, unsigned int mode)
>  {
> +	if (1) {
> +		size_t len = strlen(path);
> +		if (3 <= len && !strcmp(path + len - 3, "nul") &&
> +		    (3 == len || path[len - 4] == '/')) {
> +			errno = EPERM;

Shouldn't this be EEXIST? I think the issue is that the first exists for the purpose of open() but not for anything else we've done up to this point.

Show 14 quoted lines
> +			return -1;
> +		}
> +	}
>  	mode = (mode & 0100) ? 0777 : 0666;
>  	return open(path, O_WRONLY | O_CREAT | O_EXCL, mode);
>  }
> -- 
> 1.5.6.rc0.43.g823ea
> 
> --
> To unsubscribe from this list: send the line "unsubscribe git" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 
Previous: Johannes SchindelinNext: Junio C Hamano
Message 15 of 20 in “"best effort" checkout”
  1. 0/5 "best effort" checkoutJunio C Hamano, May 29, 2008
  2. 1/5 "git checkout -- paths..." should error out when paths cannot be writtenJunio C Hamano, May 29, 2008
  3. 2/5 checkout: make reset_clean_to_new() not die by itselfJunio C Hamano, May 29, 2008
  4. 3/5 checkout: consolidate reset_{to_new,clean_to_new|()Junio C Hamano, May 29, 2008
  5. 4/5 unpack_trees(): allow callers to differentiate worktree errors from merge errorsJunio C Hamano, May 29, 2008
  6. 5/5 checkout: "best effort" checkoutJunio C Hamano, May 29, 2008
  7. 6/5 NUL hack to create_file()Junio C Hamano, May 29, 2008
  8. Johannes SixtMay 29, 2008
  9. Marius Storm-OlsenMay 29, 2008
  10. Johannes SixtMay 29, 2008
  11. Daniel BarkalowMay 29, 2008
  12. Brian DessentMay 29, 2008
  13. Daniel BarkalowMay 29, 2008
  14. Johannes SchindelinMay 29, 2008
  15. Daniel BarkalowMay 29, 2008
  16. Junio C HamanoMay 29, 2008
  17. Alex RiesenMay 29, 2008
  18. Mark LevedahlMay 29, 2008
  19. Junio C HamanoMay 30, 2008
  20. Mark LevedahlMay 30, 2008

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.