aboutsummaryrefslogtreecommitdiffstats
path: root/sm/call-agent.c
diff options
context:
space:
mode:
authorNIIBE Yutaka <[email protected]>2016-09-27 05:45:21 +0000
committerNIIBE Yutaka <[email protected]>2016-09-27 05:45:21 +0000
commit4e4843e735f32b5e79a51d8062da55bfaab6ad77 (patch)
tree32551fc764650052a74aed365ae49f0b7cbabdf4 /sm/call-agent.c
parentdirmngr: Removal of no-libgcrypt.o. (diff)
downloadgnupg-4e4843e735f32b5e79a51d8062da55bfaab6ad77.tar.gz
gnupg-4e4843e735f32b5e79a51d8062da55bfaab6ad77.zip
agent, sm: Set CTX after start_agent.
* g10/call-agent.c (agent_keytocard): Assign parm.ctx after start_agent. * sm/call-agent.c (gpgsm_agent_pksign, gpgsm_scd_pksign) (gpgsm_agent_readkey, gpgsm_agent_scd_serialno) (gpgsm_agent_scd_keypairinfo, gpgsm_agent_marktrusted) (gpgsm_agent_passwd, gpgsm_agent_get_confirmation) (gpgsm_agent_ask_passphrase, gpgsm_agent_keywrap_key) (gpgsm_agent_export_key): Likewise. -- Reported-by: Rainer Perske GnuPG-bug-id: 2699 Signed-off-by: NIIBE Yutaka <[email protected]>
Diffstat (limited to 'sm/call-agent.c')
-rw-r--r--sm/call-agent.c41
1 files changed, 30 insertions, 11 deletions
diff --git a/sm/call-agent.c b/sm/call-agent.c
index c7facbb0d..326265063 100644
--- a/sm/call-agent.c
+++ b/sm/call-agent.c
@@ -228,12 +228,13 @@ gpgsm_agent_pksign (ctrl_t ctrl, const char *keygrip, const char *desc,
char *p, line[ASSUAN_LINELENGTH];
membuf_t data;
size_t len;
- struct default_inq_parm_s inq_parm = { ctrl, agent_ctx };
+ struct default_inq_parm_s inq_parm;
*r_buf = NULL;
rc = start_agent (ctrl);
if (rc)
return rc;
+ inq_parm.ctx = agent_ctx;
if (digestlen*2 + 50 > DIM(line))
return gpg_error (GPG_ERR_GENERAL);
@@ -301,7 +302,7 @@ gpgsm_scd_pksign (ctrl_t ctrl, const char *keyid, const char *desc,
const char *hashopt;
unsigned char *sigbuf;
size_t sigbuflen;
- struct default_inq_parm_s inq_parm = { ctrl, agent_ctx };
+ struct default_inq_parm_s inq_parm;
(void)desc;
@@ -320,6 +321,7 @@ gpgsm_scd_pksign (ctrl_t ctrl, const char *keyid, const char *desc,
rc = start_agent (ctrl);
if (rc)
return rc;
+ inq_parm.ctx = agent_ctx;
if (digestlen*2 + 50 > DIM(line))
return gpg_error (GPG_ERR_GENERAL);
@@ -580,12 +582,13 @@ gpgsm_agent_readkey (ctrl_t ctrl, int fromcard, const char *hexkeygrip,
size_t len;
unsigned char *buf;
char line[ASSUAN_LINELENGTH];
- struct default_inq_parm_s inq_parm = { ctrl, agent_ctx };
+ struct default_inq_parm_s inq_parm;
*r_pubkey = NULL;
rc = start_agent (ctrl);
if (rc)
return rc;
+ inq_parm.ctx = agent_ctx;
rc = assuan_transact (agent_ctx, "RESET",NULL, NULL, NULL, NULL, NULL, NULL);
if (rc)
@@ -668,12 +671,14 @@ gpgsm_agent_scd_serialno (ctrl_t ctrl, char **r_serialno)
{
int rc;
char *serialno = NULL;
- struct default_inq_parm_s inq_parm = { ctrl, agent_ctx };
+ struct default_inq_parm_s inq_parm;
*r_serialno = NULL;
rc = start_agent (ctrl);
if (rc)
return rc;
+ inq_parm.ctrl = ctrl;
+ inq_parm.ctx = agent_ctx;
rc = assuan_transact (agent_ctx, "SCD SERIALNO",
NULL, NULL,
@@ -738,12 +743,14 @@ gpgsm_agent_scd_keypairinfo (ctrl_t ctrl, strlist_t *r_list)
{
int rc;
strlist_t list = NULL;
- struct default_inq_parm_s inq_parm = { ctrl, agent_ctx };
+ struct default_inq_parm_s inq_parm;
*r_list = NULL;
rc = start_agent (ctrl);
if (rc)
return rc;
+ inq_parm.ctrl = ctrl;
+ inq_parm.ctx = agent_ctx;
rc = assuan_transact (agent_ctx, "SCD LEARN --force",
NULL, NULL,
@@ -836,11 +843,13 @@ gpgsm_agent_marktrusted (ctrl_t ctrl, ksba_cert_t cert)
int rc;
char *fpr, *dn, *dnfmt;
char line[ASSUAN_LINELENGTH];
- struct default_inq_parm_s inq_parm = { ctrl, agent_ctx };
+ struct default_inq_parm_s inq_parm;
rc = start_agent (ctrl);
if (rc)
return rc;
+ inq_parm.ctrl = ctrl;
+ inq_parm.ctx = agent_ctx;
fpr = gpgsm_get_fingerprint_hexstring (cert, GCRY_MD_SHA1);
if (!fpr)
@@ -1023,11 +1032,13 @@ gpgsm_agent_passwd (ctrl_t ctrl, const char *hexkeygrip, const char *desc)
{
int rc;
char line[ASSUAN_LINELENGTH];
- struct default_inq_parm_s inq_parm = { ctrl, agent_ctx };
+ struct default_inq_parm_s inq_parm;
rc = start_agent (ctrl);
if (rc)
return rc;
+ inq_parm.ctrl = ctrl;
+ inq_parm.ctx = agent_ctx;
if (!hexkeygrip || strlen (hexkeygrip) != 40)
return gpg_error (GPG_ERR_INV_VALUE);
@@ -1059,11 +1070,13 @@ gpgsm_agent_get_confirmation (ctrl_t ctrl, const char *desc)
{
int rc;
char line[ASSUAN_LINELENGTH];
- struct default_inq_parm_s inq_parm = { ctrl, agent_ctx };
+ struct default_inq_parm_s inq_parm;
rc = start_agent (ctrl);
if (rc)
return rc;
+ inq_parm.ctrl = ctrl;
+ inq_parm.ctx = agent_ctx;
snprintf (line, DIM(line)-1, "GET_CONFIRMATION %s", desc);
line[DIM(line)-1] = 0;
@@ -1170,13 +1183,15 @@ gpgsm_agent_ask_passphrase (ctrl_t ctrl, const char *desc_msg, int repeat,
char line[ASSUAN_LINELENGTH];
char *arg4 = NULL;
membuf_t data;
- struct default_inq_parm_s inq_parm = { ctrl, agent_ctx };
+ struct default_inq_parm_s inq_parm;
*r_passphrase = NULL;
err = start_agent (ctrl);
if (err)
return err;
+ inq_parm.ctrl = ctrl;
+ inq_parm.ctx = agent_ctx;
if (desc_msg && *desc_msg && !(arg4 = percent_plus_escape (desc_msg)))
return gpg_error_from_syserror ();
@@ -1217,12 +1232,14 @@ gpgsm_agent_keywrap_key (ctrl_t ctrl, int forexport,
size_t len;
unsigned char *buf;
char line[ASSUAN_LINELENGTH];
- struct default_inq_parm_s inq_parm = { ctrl, agent_ctx };
+ struct default_inq_parm_s inq_parm;
*r_kek = NULL;
err = start_agent (ctrl);
if (err)
return err;
+ inq_parm.ctrl = ctrl;
+ inq_parm.ctx = agent_ctx;
snprintf (line, DIM(line)-1, "KEYWRAP_KEY %s",
forexport? "--export":"--import");
@@ -1306,13 +1323,15 @@ gpgsm_agent_export_key (ctrl_t ctrl, const char *keygrip, const char *desc,
size_t len;
unsigned char *buf;
char line[ASSUAN_LINELENGTH];
- struct default_inq_parm_s inq_parm = { ctrl, agent_ctx };
+ struct default_inq_parm_s inq_parm;
*r_result = NULL;
err = start_agent (ctrl);
if (err)
return err;
+ inq_parm.ctrl = ctrl;
+ inq_parm.ctx = agent_ctx;
if (desc)
{