From f9d09f41d1b044f690af173d648b0339cfc45a13 Mon Sep 17 00:00:00 2001 From: Simon Tatham Date: Sat, 26 Aug 2023 08:34:53 +0100 Subject: [PATCH] Windows Pageant: switch path separator in OpenSSH config. A user reports, _just_ in time to make the 0.79 release, that changes in the Windows port of OpenSSH from 8.9.x have made it unhappy with the use of \ as a path separator in the 'IdentityAgent' config directive. Switch to /, which is also accepted by earlier versions, so it should work everywhere. --- windows/pageant.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/windows/pageant.c b/windows/pageant.c index 22775c82..c65d6bb4 100644 --- a/windows/pageant.c +++ b/windows/pageant.c @@ -1741,7 +1741,17 @@ int WINAPI WinMain(HINSTANCE inst, HINSTANCE prev, LPSTR cmdline, int show) MB_ICONERROR | MB_OK); return 1; } - fprintf(fp, "IdentityAgent \"%s\"\n", pipename); + fputs("IdentityAgent \"", fp); + /* Some versions of Windows OpenSSH prefer / to \ as the path + * separator; others don't mind, but as far as we know, no + * version _objects_ to /, so we use it unconditionally. */ + for (const char *p = pipename; *p; p++) { + char c = *p; + if (c == '\\') + c = '/'; + fputc(c, fp); + } + fputs("\"\n", fp); fclose(fp); }