diff options
author | Werner Koch <[email protected]> | 2001-12-06 20:48:10 +0000 |
---|---|---|
committer | Werner Koch <[email protected]> | 2001-12-06 20:48:10 +0000 |
commit | ce32f6b6c8b583cd29fe52581d0428e95d4dec8a (patch) | |
tree | 428204e36435007ff3e46e813aa0047cdbd3ccb1 /sm/call-agent.c | |
parent | More error codes (diff) | |
download | gnupg-ce32f6b6c8b583cd29fe52581d0428e95d4dec8a.tar.gz gnupg-ce32f6b6c8b583cd29fe52581d0428e95d4dec8a.zip |
Decryption does now work
Diffstat (limited to 'sm/call-agent.c')
-rw-r--r-- | sm/call-agent.c | 40 |
1 files changed, 32 insertions, 8 deletions
diff --git a/sm/call-agent.c b/sm/call-agent.c index 0c0b48bf3..9aa6cc316 100644 --- a/sm/call-agent.c +++ b/sm/call-agent.c @@ -190,10 +190,12 @@ start_agent (void) log_debug ("connection to agent established\n"); - log_debug ("waiting for debugger .....\n"); - getchar (); - log_debug ("okay\n"); - + if (DBG_AGENT) + { + log_debug ("waiting for debugger [hit RETURN when ready] .....\n"); + getchar (); + log_debug ("... okay\n"); + } return 0; } @@ -288,8 +290,9 @@ gpgsm_agent_pkdecrypt (const char *keygrip, char line[LINELENGTH]; struct membuf data; struct cipher_parm_s cipher_parm; - size_t len; - + size_t n, len; + char *buf, *endp; + if (!keygrip || strlen(keygrip) != 40 || !ciphertext || !r_buf || !r_buflen) return GNUPG_Invalid_Value; *r_buf = NULL; @@ -321,7 +324,28 @@ gpgsm_agent_pkdecrypt (const char *keygrip, xfree (get_membuf (&data, &len)); return map_assuan_err (rc); } - *r_buf = get_membuf (&data, r_buflen); - return *r_buf? 0 : GNUPG_Out_Of_Core; + + put_membuf (&data, "", 1); /* make sure it is 0 terminated */ + buf = get_membuf (&data, &len); + if (!buf) + return seterr (Out_Of_Core); + assert (len); + len--; /* remove the terminating 0 */ + n = strtoul (buf, &endp, 10); + if (!n || *endp != ':') + return seterr (Invalid_Sexp); + endp++; + if (endp-buf+n > len) + return seterr (Invalid_Sexp); /* oops len does not match internal len*/ + memmove (buf, endp, n); + *r_buflen = n; + *r_buf = buf; + return 0; } + + + + + + |