X-Git-Url: https://git.distorted.org.uk/~mdw/sgt/putty/blobdiff_plain/a5470c60d0089f603a7bed7c8cf420984ae6011f..8239ee571a096dc528bf557c0e077046f378f8e7:/puttygen.c diff --git a/puttygen.c b/puttygen.c index 6a721216..9b360905 100644 --- a/puttygen.c +++ b/puttygen.c @@ -22,8 +22,6 @@ /* * TODO: - * - prompt before overwriting an existing file - * - check the return value from saversakey() * - test the generated keys for actual working-RSA-key-hood * - variable key size */ @@ -509,10 +507,25 @@ static int CALLBACK MainDlgProc (HWND hwnd, UINT msg, } if (prompt_keyfile(hwnd, "Save private key as:", filename, 1)) { - /* FIXME: prompt before overwriting */ - saversakey(filename, &state->key, &state->aux, - *passphrase ? passphrase : NULL); - /* FIXME: check return value */ + int ret; + FILE *fp = fopen(filename, "r"); + if (fp) { + char buffer[FILENAME_MAX+80]; + fclose(fp); + sprintf(buffer, "Overwrite existing file\n%.*s?", + FILENAME_MAX, filename); + ret = MessageBox(hwnd, buffer, "PuTTYgen Warning", + MB_YESNO | MB_ICONWARNING); + if (ret != IDYES) + break; + } + ret = saversakey(filename, &state->key, &state->aux, + *passphrase ? passphrase : NULL); + if (ret <= 0) { + MessageBox(hwnd, "Unable to save key file", + "PuTTYgen Error", + MB_OK | MB_ICONERROR); + } } } break;