diff options
Diffstat (limited to 'g10')
-rw-r--r-- | g10/build-packet.c | 3 | ||||
-rw-r--r-- | g10/encrypt.c | 4 |
2 files changed, 5 insertions, 2 deletions
diff --git a/g10/build-packet.c b/g10/build-packet.c index 266bf54e4..a40ed0d82 100644 --- a/g10/build-packet.c +++ b/g10/build-packet.c @@ -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); diff --git a/g10/encrypt.c b/g10/encrypt.c index 4b055fd26..aba161ddd 100644 --- a/g10/encrypt.c +++ b/g10/encrypt.c @@ -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); |