From 11cd814b19dd4278d51ab15c14e81fb8ee96777c Mon Sep 17 00:00:00 2001 From: simon Date: Mon, 19 Jan 2004 09:37:17 +0000 Subject: [PATCH] Idiot me _twice_! The new store_host_key() was failing in the absence of an existing host key file. Duhh. git-svn-id: svn://svn.tartarus.org/sgt/putty@3737 cda61777-01e9-0310-a592-d414129be87e --- unix/uxstore.c | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/unix/uxstore.c b/unix/uxstore.c index 3d2e2412..922462fa 100644 --- a/unix/uxstore.c +++ b/unix/uxstore.c @@ -507,24 +507,30 @@ void store_host_key(const char *hostname, int port, /* * Open both the old file and a new file. */ - make_filename(filename, INDEX_HOSTKEYS, NULL); - rfp = fopen(filename, "r"); - if (!rfp) - return; make_filename(tmpfilename, INDEX_HOSTKEYS_TMP, NULL); wfp = fopen(tmpfilename, "w"); if (!wfp) { - fclose(rfp); - return; + char dir[FILENAME_MAX]; + + make_filename(dir, INDEX_DIR, NULL); + mkdir(dir, 0700); + wfp = fopen(tmpfilename, "w"); } + if (!wfp) + return; + make_filename(filename, INDEX_HOSTKEYS, NULL); + rfp = fopen(filename, "r"); /* * Copy all lines from the old file to the new one that _don't_ * involve the same host key identifier as the one we're adding. */ - while ( (line = fgetline(rfp)) ) { - if (strncmp(line, newtext, headerlen)) - fputs(line, wfp); + if (rfp) { + while ( (line = fgetline(rfp)) ) { + if (strncmp(line, newtext, headerlen)) + fputs(line, wfp); + } + fclose(rfp); } /* @@ -532,7 +538,6 @@ void store_host_key(const char *hostname, int port, */ fputs(newtext, wfp); - fclose(rfp); fclose(wfp); rename(tmpfilename, filename); -- 2.11.0