X-Git-Url: https://git.distorted.org.uk/u/mdw/putty/blobdiff_plain/b492c4d75bec08565e126e548888d40ba921e9a5..f85e6f6edb2c9415bc10bd2015479d72ea8c5ae2:/pageant.c diff --git a/pageant.c b/pageant.c index c401ea55..e8428b03 100644 --- a/pageant.c +++ b/pageant.c @@ -114,12 +114,6 @@ static gsi_fn_t getsecurityinfo; #endif /* - * Exports from pageantc.c - */ -void agent_query(void *in, int inlen, void **out, int *outlen); -int agent_exists(void); - -/* * Forward references */ static void *make_keylist1(int *length); @@ -536,7 +530,7 @@ static void add_keyfile(Filename filename) if (already_running) { unsigned char *request, *response; void *vresponse; - int reqlen, clen, resplen; + int reqlen, clen, resplen, ret; clen = strlen(rkey->comment); @@ -569,7 +563,9 @@ static void add_keyfile(Filename filename) reqlen += 4 + clen; PUT_32BIT(request, reqlen - 4); - agent_query(request, reqlen, &vresponse, &resplen); + ret = agent_query(request, reqlen, &vresponse, &resplen, + NULL, NULL); + assert(ret == 1); response = vresponse; if (resplen < 5 || response[4] != SSH_AGENT_SUCCESS) MessageBox(NULL, "The already running Pageant " @@ -586,7 +582,7 @@ static void add_keyfile(Filename filename) if (already_running) { unsigned char *request, *response; void *vresponse; - int reqlen, alglen, clen, keybloblen, resplen; + int reqlen, alglen, clen, keybloblen, resplen, ret; alglen = strlen(skey->alg->name); clen = strlen(skey->comment); @@ -614,7 +610,9 @@ static void add_keyfile(Filename filename) PUT_32BIT(request, reqlen - 4); reqlen += clen + 4; - agent_query(request, reqlen, &vresponse, &resplen); + ret = agent_query(request, reqlen, &vresponse, &resplen, + NULL, NULL); + assert(ret == 1); response = vresponse; if (resplen < 5 || response[4] != SSH_AGENT_SUCCESS) MessageBox(NULL, "The already running Pageant " @@ -739,11 +737,12 @@ static void *get_keylist1(void) if (already_running) { unsigned char request[5], *response; void *vresponse; - int resplen; + int resplen, retval; request[4] = SSH1_AGENTC_REQUEST_RSA_IDENTITIES; PUT_32BIT(request, 4); - agent_query(request, 5, &vresponse, &resplen); + retval = agent_query(request, 5, &vresponse, &resplen, NULL, NULL); + assert(retval == 1); response = vresponse; if (resplen < 5 || response[4] != SSH1_AGENT_RSA_IDENTITIES_ANSWER) return NULL; @@ -769,12 +768,13 @@ static void *get_keylist2(void) if (already_running) { unsigned char request[5], *response; void *vresponse; - int resplen; + int resplen, retval; request[4] = SSH2_AGENTC_REQUEST_IDENTITIES; PUT_32BIT(request, 4); - agent_query(request, 5, &vresponse, &resplen); + retval = agent_query(request, 5, &vresponse, &resplen, NULL, NULL); + assert(retval == 1); response = vresponse; if (resplen < 5 || response[4] != SSH2_AGENT_IDENTITIES_ANSWER) return NULL; @@ -1792,8 +1792,20 @@ void spawn_cmd(char *cmdline, char * args, int show) } } +/* + * This is a can't-happen stub, since Pageant never makes + * asynchronous agent requests. + */ +void agent_schedule_callback(void (*callback)(void *, void *, int), + void *callback_ctx, void *data, int len) +{ + assert(!"We shouldn't get here"); +} + void cleanup_exit(int code) { exit(code); } +int flags = FLAG_SYNCAGENT; + int WINAPI WinMain(HINSTANCE inst, HINSTANCE prev, LPSTR cmdline, int show) { WNDCLASS wndclass;