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

Re: [PATCH] mingw: do not crash on open(NULL, ...)

From
Junio C Hamano <gitster@pobox.com>
Date
Sep 23, 2010, 22:50 UTC
Message-ID
<7vy6asoz0i.fsf@alter.siamese.dyndns.org>
In-Reply-To
<AANLkTinJ4kKRsKO6HyqQH4Oy12E1mdqCXxPb2z+59818@mail.gmail.com>
Erik Faye-Lund <kusmabite@gmail.com> writes:
Show 15 quoted lines
> On Thu, Sep 23, 2010 at 10:35 AM, Erik Faye-Lund <kusmabite@gmail.com> wrote:
>> Since open() already sets errno correctly for the NULL-case, let's just
>> avoid the problematic strcmp.
>>
>> Signed-off-by: Erik Faye-Lund <kusmabite@gmail.com>
>
> I guess I should add a comment as to why this patch is needed:
>
> This seems to be the culprit for issue 523 in the msysGit issue
> tracker: http://code.google.com/p/msysgit/issues/detail?id=523
>
> fetch_and_setup_pack_index() apparently pass a NULL-pointer to
> parse_pack_index(), which in turn pass it to check_packed_git_idx(),
> which again pass it to open(). This all looks intentional to my
> (http.c-untrained) eye.

Surely, open(NULL) should be rejected by a sane system, and your patch looks sane to me.

But depending on and exploiting the fact sounds like a horrible hack in the caller of parse_pack_index(..., NULL) to me.

Shawn may have intentionally done that in 750ef42 (http-fetch: Use temporary files for pack-*.idx until verified, 2010-04-19), but at least 7b64469 (Allow parse_pack_index on temporary files, 2010-04-19) should have documented that idx_path is allowed to be NULL under what circumstance (and for what purpose it is useful to do so) when it introduced the second parameter to the API.

What were we smoking?
Previous: Erik Faye-LundNext: Erik Faye-Lund
Message 5 of 12 in “mingw: do not crash on open(NULL, ...)”
  1. mingw: do not crash on open(NULL, ...)Erik Faye-Lund, Sep 23, 2010
  2. Erik Faye-LundSep 23, 2010
  3. Pat ThoytsSep 23, 2010
  4. Erik Faye-LundSep 23, 2010
  5. Junio C HamanoSep 23, 2010
  6. Erik Faye-LundSep 27, 2010
  7. Pat ThoytsSep 27, 2010
  8. Erik Faye-LundSep 27, 2010
  9. Johannes SchindelinSep 27, 2010
  10. Johannes SchindelinSep 24, 2010
  11. Johannes SixtSep 23, 2010
  12. Pat ThoytsSep 24, 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.