]> granicus.if.org Git - p11-kit/commitdiff
trust: Fix saving trust file on Windows
authorDaiki Ueno <dueno@redhat.com>
Wed, 15 Feb 2017 17:26:19 +0000 (18:26 +0100)
committerDaiki Ueno <ueno@gnu.org>
Thu, 16 Feb 2017 15:17:14 +0000 (16:17 +0100)
trust/save.c

index 66c9050fdef677060d76d9c6255845c0eda1dc15..57544e8adc2929b0b80c21a5087ec23309e484e5 100644 (file)
@@ -199,6 +199,8 @@ on_unique_try_rename (void *data,
                return -1;
        }
 
+       free (file->temp);
+       file->temp = strdup (path);
        return 1; /* All done */
 }
 
@@ -279,13 +281,14 @@ p11_save_finish_file (p11_save_file *file,
                        ret = false;
                }
 
-               if (ret == true &&
-                   rename (file->temp, path) < 0) {
-                       p11_message_err (errno, "couldn't complete writing file: %s", path);
-                       ret = false;
-               }
+               if (ret == true && strcmp (file->temp, path) != 0) {
+                       if (rename (file->temp, path) < 0) {
+                               p11_message_err (errno, "couldn't complete writing file: %s", path);
+                               ret = false;
+                       }
 
-               unlink (file->temp);
+                       unlink (file->temp);
+               }
 
 #endif /* OS_WIN32 */
        }