mirror of
git://git.gnupg.org/gnupg.git
synced 2025-01-21 14:47:03 +01:00
gpg: Also detect a plaintext packet before an encrypted packet.
* g10/mainproc.c (proc_encrypted): Print warning and later force an error. -- Note that when this error is triggered the plaintext from the literal data packet has already been outputted before the BEGIN_DECRYPTION status line. We fail only later to get more information. Callers need to check and act upon the decryption error code anyway. Thanks to Marcus for pointing out this case. GnuPG-bug-id: 4000 Signed-off-by: Werner Koch <wk@gnupg.org>
This commit is contained in:
parent
257661d6ae
commit
344b548dc7
@ -615,6 +615,14 @@ static void
|
||||
proc_encrypted (CTX c, PACKET *pkt)
|
||||
{
|
||||
int result = 0;
|
||||
int early_plaintext = literals_seen;
|
||||
|
||||
if (early_plaintext)
|
||||
{
|
||||
log_info (_("WARNING: multiple plaintexts seen\n"));
|
||||
write_status_errcode ("decryption.early_plaintext", GPG_ERR_BAD_DATA);
|
||||
/* We fail only later so that we can print some more info first. */
|
||||
}
|
||||
|
||||
if (!opt.quiet)
|
||||
{
|
||||
@ -734,6 +742,10 @@ proc_encrypted (CTX c, PACKET *pkt)
|
||||
if (!result)
|
||||
result = decrypt_data (c->ctrl, c, pkt->pkt.encrypted, c->dek );
|
||||
|
||||
/* Trigger the deferred error. */
|
||||
if (!result && early_plaintext)
|
||||
result = gpg_error (GPG_ERR_BAD_DATA);
|
||||
|
||||
if (result == -1)
|
||||
;
|
||||
else if (!result
|
||||
|
Loading…
x
Reference in New Issue
Block a user