1
0
Fork 0
mirror of git://git.gnupg.org/gnupg.git synced 2025-07-02 22:46:30 +02:00

gpg: Fix assertion failure due to errors in encrypt_filter.

* common/iobuf.c (iobuf_copy): Use log_assert.  Explicitly cast error
return value.
* g10/build-packet.c (do_plaintext): Check for iobuf_copy error.

* g10/encrypt.c (encrypt_filter): Immediately set header_okay.
--

Fixes-commit: 8066f8a347
which caused the assertion failure on error.

The second fix avoids repeated error message about non-compliant keys.

GnuPG-bug-id: 6174
This commit is contained in:
Werner Koch 2022-08-31 13:35:41 +02:00
parent f88cb12f8e
commit aa0c942521
No known key found for this signature in database
GPG key ID: E3FDFF218E45B72B
3 changed files with 9 additions and 6 deletions

View file

@ -753,6 +753,9 @@ do_plaintext( IOBUF out, int ctb, PKT_plaintext *pt )
if (pt->buf)
{
nbytes = iobuf_copy (out, pt->buf);
if (nbytes == (size_t)(-1)
&& (iobuf_error (out) || iobuf_error (pt->buf)))
return iobuf_error (out)? iobuf_error (out):iobuf_error (pt->buf);
if(ctb_new_format_p (ctb) && !pt->len)
/* Turn off partial body length mode. */
iobuf_set_partial_body_length_mode (out, 0);

View file

@ -878,6 +878,8 @@ encrypt_filter (void *opaque, int control,
{
if ( !efx->header_okay )
{
efx->header_okay = 1;
efx->cfx.dek = create_dek_with_warnings (0, efx->pk_list);
rc = check_encryption_compliance (efx->cfx.dek, efx->pk_list);
@ -904,8 +906,6 @@ encrypt_filter (void *opaque, int control,
}
iobuf_push_filter (a, cipher_filter_cfb, &efx->cfx);
efx->header_okay = 1;
}
rc = iobuf_write (a, buf, size);