mirror of
https://git.tartarus.org/simon/putty.git
synced 2025-01-09 17:38:00 +00:00
Plug a few minor memory leaks, based on a patch by Sirp Potijk.
While I'm here, add an assertion in sshrand.c to catch mistakes in reference counting. [originally from svn r8846]
This commit is contained in:
parent
99455bfc33
commit
5ea11dfb3a
18
cmdline.c
18
cmdline.c
@ -56,20 +56,30 @@ static void cmdline_save_param(char *p, char *value, int pri)
|
||||
saves[pri].nsaved++;
|
||||
}
|
||||
|
||||
static char *cmdline_password = NULL;
|
||||
|
||||
void cmdline_cleanup(void)
|
||||
{
|
||||
int pri;
|
||||
|
||||
for (pri = 0; pri < NPRIORITIES; pri++)
|
||||
if (cmdline_password) {
|
||||
memset(cmdline_password, 0, strlen(cmdline_password));
|
||||
sfree(cmdline_password);
|
||||
cmdline_password = NULL;
|
||||
}
|
||||
|
||||
for (pri = 0; pri < NPRIORITIES; pri++) {
|
||||
sfree(saves[pri].params);
|
||||
saves[pri].params = NULL;
|
||||
saves[pri].savesize = 0;
|
||||
saves[pri].nsaved = 0;
|
||||
}
|
||||
}
|
||||
|
||||
#define SAVEABLE(pri) do { \
|
||||
if (need_save) { cmdline_save_param(p, value, pri); return ret; } \
|
||||
} while (0)
|
||||
|
||||
static char *cmdline_password = NULL;
|
||||
|
||||
/*
|
||||
* Similar interface to get_userpass_input(), except that here a -1
|
||||
* return means that we aren't capable of processing the prompt and
|
||||
@ -99,6 +109,8 @@ int cmdline_get_passwd_input(prompts_t *p, unsigned char *in, int inlen) {
|
||||
p->prompts[0]->result_len);
|
||||
p->prompts[0]->result[p->prompts[0]->result_len-1] = '\0';
|
||||
memset(cmdline_password, 0, strlen(cmdline_password));
|
||||
sfree(cmdline_password);
|
||||
cmdline_password = NULL;
|
||||
tried_once = 1;
|
||||
return 1;
|
||||
|
||||
|
2
ssh.c
2
ssh.c
@ -2853,6 +2853,8 @@ static int ssh_do_close(Ssh ssh, int notify_exit)
|
||||
del234(ssh->portfwds, pf); /* moving next one to index 0 */
|
||||
free_portfwd(pf);
|
||||
}
|
||||
freetree234(ssh->portfwds);
|
||||
ssh->portfwds = NULL;
|
||||
}
|
||||
|
||||
return ret;
|
||||
|
@ -4,6 +4,7 @@
|
||||
|
||||
#include "putty.h"
|
||||
#include "ssh.h"
|
||||
#include <assert.h>
|
||||
|
||||
/* Collect environmental noise every 5 minutes */
|
||||
#define NOISE_REGULAR_INTERVAL (5*60*TICKSPERSEC)
|
||||
@ -225,6 +226,10 @@ void random_ref(void)
|
||||
void random_unref(void)
|
||||
{
|
||||
random_active--;
|
||||
assert(random_active >= 0);
|
||||
if (random_active) return;
|
||||
|
||||
expire_timer_context(&pool);
|
||||
}
|
||||
|
||||
int random_byte(void)
|
||||
|
Loading…
Reference in New Issue
Block a user