mirror of
git://git.gnupg.org/gnupg.git
synced 2025-03-28 22:49:59 +01:00
gpgcompose: Fix --sk-esk.
* g10/gpgcompose.c (sk_esk): Copy the result content correctly. Don't forget to free the result. -- Fixes-commit: 0131d4369a81a51bf7bb328cc81a3bb082ed1a94 Signed-off-by: NIIBE Yutaka <gniibe@fsij.org>
This commit is contained in:
parent
7fc3decc2e
commit
69930f6884
@ -2281,16 +2281,27 @@ sk_esk (const char *option, int argc, char *argv[], void *cookie)
|
|||||||
/* Encrypt the session key using the s2k specifier. */
|
/* Encrypt the session key using the s2k specifier. */
|
||||||
{
|
{
|
||||||
DEK *sesdekp = &sesdek;
|
DEK *sesdekp = &sesdek;
|
||||||
|
void *enckey;
|
||||||
|
size_t enckeylen;
|
||||||
|
|
||||||
/* Now encrypt the session key (or rather, the algorithm used to
|
/* Now encrypt the session key (or rather, the algorithm used to
|
||||||
encrypt the SKESK plus the session key) using ENCKEY. */
|
encrypt the SKESK plus the session key) using S2KDEK. */
|
||||||
err = encrypt_seskey (&s2kdek, 0, &sesdekp,
|
err = encrypt_seskey (&s2kdek, 0, &sesdekp, &enckey, &enckeylen);
|
||||||
(void**)&ske->seskey, (size_t *)&ske->seskeylen);
|
|
||||||
if (err)
|
if (err)
|
||||||
log_fatal ("encrypt_seskey failed: %s\n", gpg_strerror (err));
|
log_fatal ("encrypt_seskey failed: %s\n", gpg_strerror (err));
|
||||||
|
|
||||||
|
if (enckeylen - 1 > sesdek.keylen)
|
||||||
|
log_fatal ("key size is too big: %z\n", enckeylen);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ske->seskeylen = (byte)enckeylen;
|
||||||
|
memcpy (ske->seskey, enckey, enckeylen);
|
||||||
|
}
|
||||||
|
|
||||||
/* Save the session key for later. */
|
/* Save the session key for later. */
|
||||||
session_key = sesdek;
|
session_key = sesdek;
|
||||||
|
xfree (enckey);
|
||||||
}
|
}
|
||||||
|
|
||||||
pkt.pkttype = PKT_SYMKEY_ENC;
|
pkt.pkttype = PKT_SYMKEY_ENC;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user