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

[BUG] Breakage in t5509 # 2 from read(stdin) EINVAL

From
Randall S. Becker <rsbecker@nexbridge.com>
Date
Jan 10, 2018, 18:36 UTC
Message-ID
<00e601d38a41$e25a1c60$a70e5520$@nexbridge.com>
Hi All,

Here’s the situation. In the NonStop port, since time immemorial, we’ve had a breakage in 5509 that I’ve finally had the chance to track down. The error report at the breakage is:

./trash directory.t5509-fetch-push-namespaces/original: GIT_TRACE=true GIT_PACKET_TRACE=true GIT_TRANSLOOP_DEBUG=true git push pushee-namespaced master 11:55:02.512020 trace: built-in: git 'push' 'pushee-namespaced' 'master' 11:55:02.600895 trace: run_command: 'git-remote-ext' 'pushee-namespaced' 'git --namespace=namespace %s ../pushee' 11:55:02.610439 trace: built-in: git 'remote-ext' 'pushee-namespaced' 'git --namespace=namespace %s ../pushee' 11:55:02.612643 trace: run_command: 'git' '--namespace=namespace' 'receive-pack' '../pushee' 11:55:02.622553 trace: built-in: git 'receive-pack' '../pushee' Transfer loop debugging: stdin is readable error: read(stdin) failed: Invalid function argument Transfer loop debugging: remote input is readable error: read(remote input) failed: Invalid function argument error: Git to program copy process failed fatal: Could not read from remote repository.

Please make sure you have the correct access rights and the repository exists.

transport-helper.c uses read instead of wrapper.c’s xread to do its work. It looks like when the buffer size calculation is done passed into read, we’re getting a very large value, more than SSIZE_MAX. In udt_do_read:

bytes = read(t->src, t->buf + t->bufuse, BUFFERSIZE - t->bufuse);

generates EINVAL. This may be because unidirectional_transfer.bufuse is size_t instead of ssize_t. I can try to fix this a number of ways, but it seems that xread is likely the way to go. udt_do_write already uses xwrite.

I’m looking to fix on or after 2.13.5 (7234152).
Opinions?

Thanks, Randall

-- Brief whoami:
  NonStop developer since approximately NonStop(211288444200000000)
  UNIX developer since approximately 421664400
-- In my real life, I talk too much.
Message 1 of 1 in “[BUG] Breakage in t5509 # 2 from read(stdin) EINVAL”
  1. Randall S. BeckerJan 10, 2018

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.