X-Git-Url: https://git.distorted.org.uk/u/mdw/putty/blobdiff_plain/d9c40fd6ed72588278c633ee5db5c2eefad6ba7c..62cdf1edd4ad3e56b38ec0126d2af260a2f22b08:/unix/uxstore.c diff --git a/unix/uxstore.c b/unix/uxstore.c index d787ba40..670c67b2 100644 --- a/unix/uxstore.c +++ b/unix/uxstore.c @@ -318,13 +318,18 @@ void write_random_seed(void *data, int len) char fname[FILENAME_MAX]; make_filename(fname, INDEX_RANDSEED); - fd = open(fname, O_CREAT | O_TRUNC | O_WRONLY, 0600); + /* + * Don't truncate the random seed file if it already exists; if + * something goes wrong half way through writing it, it would + * be better to leave the old data there than to leave it empty. + */ + fd = open(fname, O_CREAT | O_WRONLY, 0600); if (fd < 0) { char dir[FILENAME_MAX]; make_filename(dir, INDEX_DIR); mkdir(dir, 0700); - fd = open(fname, O_CREAT | O_TRUNC | O_WRONLY, 0600); + fd = open(fname, O_CREAT | O_WRONLY, 0600); } while (len > 0) {