Re: [PATCH v2 04/28] fsmonitor-ipc: create client routines for git-fsmonitor--daemon
- From
Johannes Schindelin <johannes.schindelin@gmx.de>
- Date
- Jun 2, 2021, 11:24 UTC
- Message-ID
- <nycvar.QRO.7.76.6.2106021320490.55@tvgsbejvaqbjf.bet>
- In-Reply-To
- <e4a263728773381a64b8662c0577a3f12eff4ca0.1621691828.git.gitgitgadget@gmail.com>
Hi Jeff,
I know you're on vacation, therefore I would like to apologize for adding to your post-vacation notification overload, but...
On Sat, 22 May 2021, Jeff Hostetler via GitGitGadget wrote:
Show 36 quoted lines
> From: Jeff Hostetler <jeffhost@microsoft.com>
>
> diff --git a/fsmonitor-ipc.c b/fsmonitor-ipc.c
> new file mode 100644
> index 000000000000..e62901a85b5d
> --- /dev/null
> +++ b/fsmonitor-ipc.c
> @@ -0,0 +1,179 @@
> [...]
> +
> +int fsmonitor_ipc__send_query(const char *since_token,
> + struct strbuf *answer)
> +{
> + int ret = -1;
> + int tried_to_spawn = 0;
> + enum ipc_active_state state = IPC_STATE__OTHER_ERROR;
> + struct ipc_client_connection *connection = NULL;
> + struct ipc_client_connect_options options
> + = IPC_CLIENT_CONNECT_OPTIONS_INIT;
> +
> + options.wait_if_busy = 1;
> + options.wait_if_not_found = 0;
> +
> + trace2_region_enter("fsm_client", "query", NULL);
> +
> + trace2_data_string("fsm_client", NULL, "query/command",
> + since_token);
> +
> +try_again:
> + state = ipc_client_try_connect(fsmonitor_ipc__get_path(), &options,
> + &connection);
> +
> + switch (state) {
> + case IPC_STATE__LISTENING:
> + ret = ipc_client_send_command_to_connection(
> + connection, since_token, strlen(since_token), answer);Here, `since_token` can be `NULL` (and hence the `strlen(since_token)` can lead to a segmentation fault). I ran into this situation while `git rebase -i --autostash` wanted to apply the stashed changes.
Since I picked up your v2 and included it in Git for Windows v2.32.0-rc2, I needed this hotfix: https://github.com/git-for-windows/git/pull/3241
Thanks, Dscho