1
0
mirror of https://git.tartarus.org/simon/putty.git synced 2025-01-25 01:02:24 +00:00

Rework keylist_update() to fix both a buffer-size limitation and a

memory leak.

[originally from svn r9955]
This commit is contained in:
Simon Tatham 2013-07-22 07:11:35 +00:00
parent da052d88f8
commit 13667de106

View File

@ -353,28 +353,27 @@ static void keylist_update(void)
0, (LPARAM) listentry);
}
for (i = 0; NULL != (skey = index234(ssh2keys, i)); i++) {
char listentry[512], *p;
int len;
char *listentry, *p;
int fp_len;
/*
* Replace two spaces in the fingerprint with tabs, for
* nice alignment in the box.
*/
p = skey->alg->fingerprint(skey->data);
strncpy(listentry, p, sizeof(listentry));
listentry = dupprintf("%s\t%s", p, skey->comment);
fp_len = strlen(listentry);
sfree(p);
p = strchr(listentry, ' ');
if (p)
if (p && p < listentry + fp_len)
*p = '\t';
p = strchr(listentry, ' ');
if (p)
if (p && p < listentry + fp_len)
*p = '\t';
len = strlen(listentry);
if (len < sizeof(listentry) - 2) {
listentry[len] = '\t';
strncpy(listentry + len + 1, skey->comment,
sizeof(listentry) - len - 1);
}
SendDlgItemMessage(keylist, 100, LB_ADDSTRING, 0,
(LPARAM) listentry);
sfree(listentry);
}
SendDlgItemMessage(keylist, 100, LB_SETCURSEL, (WPARAM) - 1, 0);
}