summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/exchange-tools/taler-exchange-offline.c50
1 files changed, 27 insertions, 23 deletions
diff --git a/src/exchange-tools/taler-exchange-offline.c b/src/exchange-tools/taler-exchange-offline.c
index 59e0b0a40..18c8a7b18 100644
--- a/src/exchange-tools/taler-exchange-offline.c
+++ b/src/exchange-tools/taler-exchange-offline.c
@@ -2334,34 +2334,38 @@ tofu_check (const struct TALER_SecurityModulePublicKeyP secm[2])
"SECM_TOFU_FILE");
return GNUNET_SYSERR;
}
- ret = GNUNET_DISK_fn_read (fn,
- &old,
- sizeof (old));
- if (GNUNET_SYSERR != ret)
+ if (GNUNET_OK ==
+ GNUNET_DISK_file_test (fn))
{
- if (ret != sizeof (old))
- {
- GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
- "File `%s' corrupt\n",
- fn);
- GNUNET_free (fn);
- return GNUNET_SYSERR;
- }
- /* TOFU check */
- if (0 != memcmp (old,
- secm,
- sizeof (old)))
+ ret = GNUNET_DISK_fn_read (fn,
+ &old,
+ sizeof (old));
+ if (GNUNET_SYSERR != ret)
{
- GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
- "Fatal: security module keys changed (file `%s')!\n",
- fn);
+ if (ret != sizeof (old))
+ {
+ GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+ "File `%s' corrupt\n",
+ fn);
+ GNUNET_free (fn);
+ return GNUNET_SYSERR;
+ }
+ /* TOFU check */
+ if (0 != memcmp (old,
+ secm,
+ sizeof (old)))
+ {
+ GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+ "Fatal: security module keys changed (file `%s')!\n",
+ fn);
+ GNUNET_free (fn);
+ return GNUNET_SYSERR;
+ }
GNUNET_free (fn);
- return GNUNET_SYSERR;
+ return GNUNET_OK;
}
- GNUNET_free (fn);
- return GNUNET_OK;
}
- else
+
{
char *key;