commit 100759a7d796f4e486a89b65b3ca491c1141056f
parent 8cac260a4b7c0b4df4d1229a5e41e64c3a687173
Author: René Wagner <rwagner@rw-net.de>
Date: Tue, 23 Feb 2021 07:56:32 +0100
fix display of message on TOFU_FINGERPRINT_MISMATCH
Previously the message was never displayed to users
leaving them with a simple "Error: certificate is untrusted".
This also fixes the display of line numbers in the message.
Diffstat:
2 files changed, 4 insertions(+), 1 deletion(-)
diff --git a/src/gmnlm.c b/src/gmnlm.c
@@ -1106,7 +1106,7 @@ tofu_callback(enum tofu_error error, const char *fingerprint,
free(host);
break;
case TOFU_FINGERPRINT_MISMATCH:
- snprintf(prompt, sizeof(prompt),
+ fprintf(browser->tty,
"The certificate offered by this server DOES NOT MATCH the one we have on file.\n"
"/!\\ Someone may be eavesdropping on or manipulating this connection. /!\\\n"
"The unknown certificate's fingerprint is:\n"
diff --git a/src/tofu.c b/src/tofu.c
@@ -188,6 +188,7 @@ gemini_tofu_init(struct gemini_tofu *tofu,
return;
}
n = 0;
+ int lineno = 1;
char *line = NULL;
while (getline(&line, &n, f) != -1) {
struct known_host *host = calloc(1, sizeof(struct known_host));
@@ -211,6 +212,8 @@ gemini_tofu_init(struct gemini_tofu *tofu,
assert(tok);
host->expires = strtoul(tok, NULL, 10);
+ host->lineno = lineno++;
+
host->next = tofu->known_hosts;
tofu->known_hosts = host;
}