diff --git a/src/syncterm/bbslist.c b/src/syncterm/bbslist.c index 9659f9dc0351525f8a115ea4ce8e59d9888133df..19fbb9317058d74112a3bd475be8f7c161816b53 100644 --- a/src/syncterm/bbslist.c +++ b/src/syncterm/bbslist.c @@ -781,7 +781,7 @@ read_item(str_list_t listfile, struct bbslist *entry, char *bbsname, int id, int for (i = 0; i < 20; i++) { if (!(isxdigit(fp[i*2]) && isxdigit(fp[i*2+1]))) break; - entry->ssh_fingerprint[i] = (HEX_CHAR_TO_INT(fp[i*2]) * 256) + HEX_CHAR_TO_INT(fp[i*2+1]); + entry->ssh_fingerprint[i] = (HEX_CHAR_TO_INT(fp[i*2]) * 16) + HEX_CHAR_TO_INT(fp[i*2+1]); } if (i == 20) entry->has_fingerprint = true; @@ -1745,6 +1745,7 @@ add_bbs(char *listpath, struct bbslist *bbs) for (int i = 0; i < 20; i++) { sprintf(&fp[i * 2], "%02x", bbs->ssh_fingerprint[i]); } + fp[sizeof(fp)-1] = 0; iniSetString(&inifile, bbs->name, "SSHFingerprint", fp, &ini_style); } iniSetBool(&inifile, bbs->name, "SFTPPublicKey", bbs->sftp_public_key, &ini_style); diff --git a/src/syncterm/ssh.c b/src/syncterm/ssh.c index 96af86f54045c925b7a11e722fac354e36ae311b..3221e4ce4e5a67a8afa48d289c4ee42e61f65f98 100644 --- a/src/syncterm/ssh.c +++ b/src/syncterm/ssh.c @@ -922,15 +922,17 @@ ssh_connect(struct bbslist *bbs) int i; slen = 0; + for (i = 0; i < sizeof(server_fp); i++) { + sprintf(&fpstr[i * 2], "%02x", server_fp[i]); + } + fpstr[sizeof(fpstr)-1] = 0; if (bbs->has_fingerprint) { char ofpstr[41]; - for (i = 0; i < sizeof(server_fp); i++) { - sprintf(&fpstr[i * 2], "%02x", server_fp[i]); - } for (i = 0; i < sizeof(server_fp); i++) { sprintf(&ofpstr[i * 2], "%02x", bbs->ssh_fingerprint[i]); } + ofpstr[sizeof(ofpstr)-1] = 0; asprintf(&uifc.helpbuf, "`Fingerprint Changed`\n\n" "The server fingerprint has changed from the last known good connection.\n" "This may indicate someone is evesdropping on your connection.\n"