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

Re: Non-blob .gitmodules and .gitattributes

From
Junio C Hamano <gitster@pobox.com>
Date
Jun 14, 2024, 15:35 UTC
Message-ID
<xmqqbk43ilk3.fsf@gitster.g>
In-Reply-To
<4F3AD9A8-DA3E-43E2-BF9A-9D7458EED7EA@gmail.com>
Alexey Pelykh <alexey.pelykh@gmail.com> writes:
> I've stumbled upon a check that ensures that .gitmodules and
> .gitattributes must be blobs,
Alexey, thanks for a report.

For those who want to take a look, unfortunately Alexey does not show any error message or describe the end-user visible effect that the "check" caused, so there is a bit too little to go on.

> yet while I get why they should not
> be e.g. a symlink, what's the downside of permitting (and ignoring
> for the actual purpose) e.g. .gitattributes folder?

My knee-jerk reaction is that we probably can safely loosen by ignoring non-blob .gitWHATEVER files, but security-minded folks may be able to come up with some plausible attack scenarios if we did so.

Comments from those who have worked on transfer time and runtime checks on these are highly appreciated.

Having said that, the checks for .gitmodules and .gitattributes in fsck.c first collect objects that tree entries with these names point at into oidsets (this all happens in fsck.c:fsck_tree()), but the actual check for these found objects are done only when they are blobs. Only when we encounter a blob object, these oidsets are looked at in fsck.c:fsck_blob(), and if it is .gitmodules its contents inspected (and may result in a warning or an error). So the "checks" Alexey reports may not be in the runtime or transfer time checks done in fsck but something else. I dunno.

Thanks.
Previous: Alexey PelykhNext: Alexey Pelykh
Message 2 of 17 in “Non-blob .gitmodules and .gitattributes”
  1. Alexey PelykhJun 14, 2024
  2. Junio C HamanoJun 14, 2024
  3. Alexey PelykhJun 14, 2024
  4. Jeff KingJun 18, 2024
  5. Alexey PelykhJun 18, 2024
  6. Junio C HamanoJun 18, 2024
  7. Jeff KingJun 18, 2024
  8. 0/4 .git{ignore,attributes} directories?Junio C Hamano, Jun 18, 2024
  9. 1/4 .gitignore: introduce GITIGNORE_FILE CPP macroJunio C Hamano, Jun 18, 2024
  10. 2/4 attr: notice and report read failure of .gitattributes filesJunio C Hamano, Jun 18, 2024
  11. Eric SunshineJun 19, 2024
  12. Junio C HamanoJun 19, 2024
  13. Eric SunshineJun 19, 2024
  14. Jeff KingJun 19, 2024
  15. Junio C HamanoJun 20, 2024
  16. 4/4 submodule: ignore .gitmodules that is not a regular fileJunio C Hamano, Jun 18, 2024
  17. 3/4 exclude: notice and report read failure of .gitignore filesJunio C Hamano, Jun 18, 2024

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.