From 46f9b0071f54191cbf05ae23b24961ac6f43de4e Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Wed, 31 Aug 2022 13:35:41 +0200 Subject: 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. -- The second fix avoids repeated error message about non-compliant keys. Updates-commit: a51067a21f688086bd8e44234a88ae367582cc76 Ported-from: aa0c942521d89f4f0aac90bacaf8a7a7cefc88d8 GnuPG-bug-id: 6174 --- common/iobuf.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'common/iobuf.c') diff --git a/common/iobuf.c b/common/iobuf.c index c88d67908..3ec64dc57 100644 --- a/common/iobuf.c +++ b/common/iobuf.c @@ -2430,7 +2430,7 @@ iobuf_temp_to_buffer (iobuf_t a, byte * buffer, size_t buflen) /* Copies the data from the input iobuf SOURCE to the output iobuf DEST until either an error is encountered or EOF is reached. - Returns the number of bytes copies. */ + Returns the number of bytes copies or (size_t)(-1) on error. */ size_t iobuf_copy (iobuf_t dest, iobuf_t source) { @@ -2441,11 +2441,11 @@ iobuf_copy (iobuf_t dest, iobuf_t source) size_t max_read = 0; int err; - assert (source->use == IOBUF_INPUT || source->use == IOBUF_INPUT_TEMP); - assert (dest->use == IOBUF_OUTPUT || source->use == IOBUF_OUTPUT_TEMP); + log_assert (source->use == IOBUF_INPUT || source->use == IOBUF_INPUT_TEMP); + log_assert (dest->use == IOBUF_OUTPUT || source->use == IOBUF_OUTPUT_TEMP); if (iobuf_error (dest)) - return -1; + return (size_t)(-1); /* Use iobuf buffer size for temporary buffer. */ temp_size = iobuf_set_buffer_size(0) * 1024; -- cgit v1.2.3