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

[PATCH 0/2] Fix use of uninitialized hash algos

From
Patrick Steinhardt <ps@pks.im>
Date
May 13, 2024, 07:15 UTC
Message-ID
<cover.1715582857.git.ps@pks.im>
Hi,

with c8aed5e8da (repository: stop setting SHA1 as the default object hash, 2024-05-07), we have stopped setting up the default hash function for `the_repository`. This change was done so that we stop implicitly using SHA1 in places where we don't really intend to. Instead, code where we try to access `the_hash_algo` without having `the_repository` properly initialized will now crash hard.

I have found two more cases where this can now be triggered:
  - git-patch-id(1) can read diffs from stdin.
  - git-hash-object(1) can hash data from stdin.

Both cases can work without a repository, and if they don't have one they will now crash.

I still consider it a good thing that we did the change regardless of those crashes. In the case of git-patch-id(1) I would claim that using `the_hash_algo` is wrong in the first place, as patch IDs should be stable and are documented to always use SHA1. Thus, patch IDs in SHA256 repos are essentially broken. And in the case of git-hash-object(1), we should expose a command line option to let the user specify the object hash. So both cases demonstrate that there is room for improvement.

If these cases keep on popping up and we don't feel comfortable with it, then we can still decide to drop c8aed5e8da. The remainder of the topic that this commit was part of should in that case stay though, as those are real bug fixes. We could then re-try in a subsequent release cycle. But for now I don't think this would be warranted yet.

This topic depends on js/ps/undecided-is-not-necessarily-sha1 at c8aed5e8da (repository: stop setting SHA1 as the default object hash, 2024-05-07).

Thanks!
Patrick
Patrick Steinhardt (2):
  builtin/patch-id: fix uninitialized hash function
  builtin/hash-object: fix uninitialized hash function
 builtin/hash-object.c  |  7 +++++++
 builtin/patch-id.c     | 13 +++++++++++++
 t/t1007-hash-object.sh |  6 ++++++
 t/t4204-patch-id.sh    | 34 ++++++++++++++++++++++++++++++++++
 4 files changed, 60 insertions(+)
-- 
2.45.GIT
Next: Patrick Steinhardt
Message 1 of 62 in “Fix use of uninitialized hash algos”
  1. 0/2 Fix use of uninitialized hash algosPatrick Steinhardt, May 13, 2024
  2. 1/2 builtin/patch-id: fix uninitialized hash functionPatrick Steinhardt, May 13, 2024
  3. 2/2 builtin/hash-object: fix uninitialized hash functionPatrick Steinhardt, May 13, 2024
  4. Junio C HamanoMay 14, 2024
  5. Junio C HamanoMay 13, 2024
  6. Junio C HamanoMay 13, 2024
  7. 0/4 Fix use of uninitialized hash algorithmsJunio C Hamano, May 13, 2024
  8. 1/4 setup: add an escape hatch for "no more default hash algorithm" changeJunio C Hamano, May 13, 2024
  9. Kyle LippincottMay 13, 2024
  10. 2/4 t1517: test commands that are designed to be run outside repositoryJunio C Hamano, May 13, 2024
  11. Kyle LippincottMay 13, 2024
  12. Junio C HamanoMay 13, 2024
  13. Junio C HamanoMay 13, 2024
  14. Kyle LippincottMay 13, 2024
  15. 3/4 builtin/patch-id: fix uninitialized hash functionJunio C Hamano, May 13, 2024
  16. 4/4 builtin/hash-object: fix uninitialized hash functionJunio C Hamano, May 13, 2024
  17. 5/4 apply: fix uninitialized hash functionJunio C Hamano, May 13, 2024
  18. 0/5 Fix use of uninitialized hash algorithmsJunio C Hamano, May 13, 2024
  19. 1/5 setup: add an escape hatch for "no more default hash algorithm" changeJunio C Hamano, May 13, 2024
  20. 2/5 t1517: test commands that are designed to be run outside repositoryJunio C Hamano, May 13, 2024
  21. 3/5 builtin/patch-id: fix uninitialized hash functionJunio C Hamano, May 13, 2024
  22. Junio C HamanoMay 13, 2024
  23. Patrick SteinhardtMay 14, 2024
  24. Junio C HamanoMay 14, 2024
  25. 4/5 builtin/hash-object: fix uninitialized hash functionJunio C Hamano, May 13, 2024
  26. Junio C HamanoMay 13, 2024
  27. Patrick SteinhardtMay 14, 2024
  28. Junio C HamanoMay 14, 2024
  29. 5/5 apply: fix uninitialized hash functionJunio C Hamano, May 13, 2024
  30. 0/5 Fix use of uninitialized hash algorithmsJunio C Hamano, May 14, 2024
  31. 1/5 setup: add an escape hatch for "no more default hash algorithm" changeJunio C Hamano, May 14, 2024
  32. Patrick SteinhardtMay 14, 2024
  33. Junio C HamanoMay 14, 2024
  34. Junio C HamanoMay 14, 2024
  35. Patrick SteinhardtMay 15, 2024
  36. Junio C HamanoMay 16, 2024
  37. 2/5 t1517: test commands that are designed to be run outside repositoryJunio C Hamano, May 14, 2024
  38. Patrick SteinhardtMay 14, 2024
  39. Junio C HamanoMay 14, 2024
  40. Patrick SteinhardtMay 15, 2024
  41. Junio C HamanoMay 15, 2024
  42. Patrick SteinhardtMay 15, 2024
  43. Junio C HamanoMay 15, 2024
  44. 3/5 builtin/patch-id: fix uninitialized hash functionJunio C Hamano, May 14, 2024
  45. 4/5 builtin/hash-object: fix uninitialized hash functionJunio C Hamano, May 14, 2024
  46. Junio C HamanoMay 17, 2024
  47. Junio C HamanoMay 20, 2024
  48. Junio C HamanoMay 20, 2024
  49. 5/5 apply: fix uninitialized hash functionJunio C Hamano, May 14, 2024
  50. 0/5 Fix use of uninitialized hash algorithmsJunio C Hamano, May 20, 2024
  51. 1/5 setup: add an escape hatch for "no more default hash algorithm" changeJunio C Hamano, May 20, 2024
  52. Patrick SteinhardtMay 21, 2024
  53. Junio C HamanoMay 21, 2024
  54. 2/5 t1517: test commands that are designed to be run outside repositoryJunio C Hamano, May 20, 2024
  55. 3/5 builtin/patch-id: fix uninitialized hash functionJunio C Hamano, May 20, 2024
  56. 4/5 builtin/hash-object: fix uninitialized hash functionJunio C Hamano, May 20, 2024
  57. 5/5 apply: fix uninitialized hash functionJunio C Hamano, May 20, 2024
  58. Patrick SteinhardtMay 21, 2024
  59. Junio C HamanoMay 21, 2024
  60. Patrick SteinhardtMay 21, 2024
  61. Junio C HamanoMay 21, 2024
  62. Patrick SteinhardtMay 22, 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.