Coverity's resource-leak checker is on the ball as usual.
} else {
passes++;
}
+
+ sfree(argv);
}
void filecmp(char *file1, char *file2, char *fmt, ...)
if (i < 0) {
freebn(reqkey.exponent);
freebn(reqkey.modulus);
+ freebn(challenge);
fail_reason = "request truncated before challenge";
goto failure;
}
int n = rsa_public_blob_len(p, keylistlen);
if (n < 0) {
*retstr = dupstr("Received broken key list from agent");
+ sfree(keylist);
+ sfree(blob);
return PAGEANT_ACTION_FAILURE;
}
p += n;
int n;
if (keylistlen < 4) {
*retstr = dupstr("Received broken key list from agent");
+ sfree(keylist);
+ sfree(blob);
return PAGEANT_ACTION_FAILURE;
}
n = GET_32BIT(p);
if (n < 0 || n > keylistlen) {
*retstr = dupstr("Received broken key list from agent");
+ sfree(keylist);
+ sfree(blob);
return PAGEANT_ACTION_FAILURE;
}
p += n;
int n;
if (keylistlen < 4) {
*retstr = dupstr("Received broken key list from agent");
+ sfree(keylist);
+ sfree(blob);
return PAGEANT_ACTION_FAILURE;
}
n = GET_32BIT(p);
if (n < 0 || n > keylistlen) {
*retstr = dupstr("Received broken key list from agent");
+ sfree(keylist);
+ sfree(blob);
return PAGEANT_ACTION_FAILURE;
}
p += n;
* Run out of passphrases to try.
*/
*retstr = comment;
+ sfree(rkey);
return PAGEANT_ACTION_NEED_PP;
}
} else
* a bad passphrase.
*/
*retstr = dupstr(error);
+ sfree(rkey);
return PAGEANT_ACTION_FAILURE;
} else if (ret == 1) {
/*
if (resplen < 5 || response[4] != SSH_AGENT_SUCCESS) {
*retstr = dupstr("The already running Pageant "
"refused to add the key.");
+ freersakey(rkey);
+ sfree(rkey);
+ sfree(request);
+ sfree(response);
return PAGEANT_ACTION_FAILURE;
}
+ freersakey(rkey);
+ sfree(rkey);
sfree(request);
sfree(response);
} else {
if (!pageant_add_ssh1_key(rkey)) {
+ freersakey(rkey);
sfree(rkey); /* already present, don't waste RAM */
}
}
if (resplen < 5 || response[4] != SSH_AGENT_SUCCESS) {
*retstr = dupstr("The already running Pageant "
"refused to add the key.");
+ sfree(request);
+ sfree(response);
return PAGEANT_ACTION_FAILURE;
}
/* Use `host' as a bare hostname. */
conf_set_str(conf, CONF_host, host);
}
+ conf_free(conf2);
} else {
/* Patch in hostname `host' to session details. */
conf_set_str(conf, CONF_host, host);
* straight on and go round this loop again.
*/
ssh_agentf_got_response(c, reply, replylen);
+ sfree(reply);
}
/*
}
*q = '\0';
+ sfree(comment); /* *just* in case of multiple Comment headers */
comment = dupstr(line);
} else if (!strcmp(line, "Subject") ||
!strncmp(line, "x-", 2)) {
dlg_cleanup(&dp);
sfree(selparams);
+ ctrl_free_box(ctrlbox);
return dp.retval;
}
}
}
XFreeFontNames(fontnames);
+ sfree(tmp);
}
static char *x11font_canonify_fontname(GtkWidget *widget, const char *name,
fprintf(stderr, "pageant: %s: %s\n", socketname, strerror(errno));
exit(1);
}
+
+ conf_free(conf);
}
int main(int argc, char **argv)
HINSTANCE dllHH = load_system32_dll("hhctrl.ocx");
GET_WINDOWS_FUNCTION(dllHH, HtmlHelpA);
if (!p_HtmlHelpA) {
+ sfree(chm_path);
chm_path = NULL;
if (dllHH)
FreeLibrary(dllHH);
Socket ret = new_error_socket
("Unable to create pipes for proxy command", plug);
sfree(cmd);
+ CloseHandle(us_from_cmd);
+ CloseHandle(cmd_to_us);
+ CloseHandle(us_to_cmd);
+ CloseHandle(cmd_from_us);
return ret;
}
}
{
char *msg = dupprintf("Opening serial device %s", serline);
logevent(serial->frontend, msg);
+ sfree(msg);
}
{