Report errors in store_host_key too.
authorsimon <simon@cda61777-01e9-0310-a592-d414129be87e>
Fri, 19 Jul 2013 17:44:38 +0000 (17:44 +0000)
committersimon <simon@cda61777-01e9-0310-a592-d414129be87e>
Fri, 19 Jul 2013 17:44:38 +0000 (17:44 +0000)
git-svn-id: svn://svn.tartarus.org/sgt/putty@9934 cda61777-01e9-0310-a592-d414129be87e

unix/uxstore.c

index 785e1e3..913b736 100644 (file)
@@ -596,18 +596,28 @@ void store_host_key(const char *hostname, int port,
      */
     tmpfilename = make_filename(INDEX_HOSTKEYS_TMP, NULL);
     wfp = fopen(tmpfilename, "w");
-    if (!wfp) {
+    if (!wfp && errno == ENOENT) {
         char *dir;
 
         dir = make_filename(INDEX_DIR, NULL);
-        mkdir(dir, 0700);
+        if (mkdir(dir, 0700) < 0) {
+            char *msg = dupprintf("Unable to store host key: mkdir(\"%s\") "
+                                  "returned '%s'", dir, strerror(errno));
+            nonfatal(msg);
+            sfree(dir);
+            sfree(tmpfilename);
+            return;
+        }
        sfree(dir);
 
         wfp = fopen(tmpfilename, "w");
     }
     if (!wfp) {
-       sfree(tmpfilename);
-       return;
+        char *msg = dupprintf("Unable to store host key: open(\"%s\") "
+                              "returned '%s'", tmpfilename, strerror(errno));
+        nonfatal(msg);
+        sfree(tmpfilename);
+        return;
     }
     filename = make_filename(INDEX_HOSTKEYS, NULL);
     rfp = fopen(filename, "r");