diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index f484216a34..5b572e09bd 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -210,7 +210,7 @@ jobs: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 - - uses: msys2/setup-msys2@ddf331adaebd714795f1042345e6ca57bd66cea8 # v2 + - uses: msys2/setup-msys2@c52d1fa9c7492275e60fe763540fb601f5f232a1 # v2 if: ${{ matrix.sys == 'msys' }} with: msystem: ${{ matrix.sys }} @@ -226,7 +226,7 @@ jobs: libpsl-devel libssh2-devel - - uses: msys2/setup-msys2@ddf331adaebd714795f1042345e6ca57bd66cea8 # v2 + - uses: msys2/setup-msys2@c52d1fa9c7492275e60fe763540fb601f5f232a1 # v2 if: ${{ matrix.sys != 'msys' }} with: msystem: ${{ matrix.sys }} diff --git a/src/tool_getpass.c b/src/tool_getpass.c index 412c50a114..84d089b6e7 100644 --- a/src/tool_getpass.c +++ b/src/tool_getpass.c @@ -98,27 +98,34 @@ char *getpass_r(const char *prompt, char *buffer, size_t buflen) char *getpass_r(const char *prompt, char *buffer, size_t buflen) { - size_t i; fputs(prompt, tool_stderr); - - for(i = 0; i < buflen; i++) { - buffer[i] = (char)getch(); - if(buffer[i] == '\r' || buffer[i] == '\n') { - buffer[i] = '\0'; - break; - } - else - if(buffer[i] == '\b') - /* remove this letter and if this is not the first key, remove the - previous one as well */ - i = i - (i >= 1 ? 2 : 1); - } - /* since echo is disabled, print a newline */ +#ifdef CURL_WINDOWS_UWP fputs("\n", tool_stderr); - /* if user did not hit ENTER, terminate buffer */ - if(i == buflen) - buffer[buflen-1] = '\0'; + if(buflen > 0) + buffer[0] = '\0'; +#else + { + size_t i; + for(i = 0; i < buflen; i++) { + buffer[i] = (char)getch(); + if(buffer[i] == '\r' || buffer[i] == '\n') { + buffer[i] = '\0'; + break; + } + else + if(buffer[i] == '\b') + /* remove this letter and if this is not the first key, remove the + previous one as well */ + i = i - (i >= 1 ? 2 : 1); + } + /* since echo is disabled, print a newline */ + fputs("\n", tool_stderr); + /* if user did not hit ENTER, terminate buffer */ + if(i == buflen) + buffer[buflen-1] = '\0'; + } +#endif return buffer; /* we always return success */ } #define DONE