mirror of
git://git.gnupg.org/gnupg.git
synced 2025-05-24 16:43:28 +02:00
gpg: Allow the caller to write the contents of a plaintext packet.
* g10/build-packet.c (do_plaintext): Change the semantics such that if PT->BUF is NULL, it is the caller's responsibility to write the content (and disable partial body length mode, if appropriate). -- Signed-off-by: Neal H. Walfield <neal@g10code.com>
This commit is contained in:
parent
1a62458614
commit
2fdb950471
@ -618,7 +618,12 @@ calc_plaintext( PKT_plaintext *pt )
|
|||||||
after this much data has been read.) If PT->LEN is 0 and CTB
|
after this much data has been read.) If PT->LEN is 0 and CTB
|
||||||
indicates that this is a new format packet, then partial block mode
|
indicates that this is a new format packet, then partial block mode
|
||||||
is assumed to have been enabled on OUT. On success, partial block
|
is assumed to have been enabled on OUT. On success, partial block
|
||||||
mode is disabled. */
|
mode is disabled.
|
||||||
|
|
||||||
|
If PT->BUF is NULL, the the caller must write out the data. In
|
||||||
|
this case, if PT->LEN was 0, then partial body length mode was
|
||||||
|
enabled and the caller must disable it by calling
|
||||||
|
iobuf_set_partial_body_length_mode (out, 0). */
|
||||||
static int
|
static int
|
||||||
do_plaintext( IOBUF out, int ctb, PKT_plaintext *pt )
|
do_plaintext( IOBUF out, int ctb, PKT_plaintext *pt )
|
||||||
{
|
{
|
||||||
@ -637,13 +642,16 @@ do_plaintext( IOBUF out, int ctb, PKT_plaintext *pt )
|
|||||||
if (rc)
|
if (rc)
|
||||||
return rc;
|
return rc;
|
||||||
|
|
||||||
nbytes = iobuf_copy (out, pt->buf);
|
if (pt->buf)
|
||||||
if(ctb_new_format_p (ctb) && !pt->len)
|
{
|
||||||
/* Turn off partial body length mode. */
|
nbytes = iobuf_copy (out, pt->buf);
|
||||||
iobuf_set_partial_body_length_mode (out, 0);
|
if(ctb_new_format_p (ctb) && !pt->len)
|
||||||
if( pt->len && nbytes != pt->len )
|
/* Turn off partial body length mode. */
|
||||||
log_error("do_plaintext(): wrote %lu bytes but expected %lu bytes\n",
|
iobuf_set_partial_body_length_mode (out, 0);
|
||||||
(ulong)nbytes, (ulong)pt->len );
|
if( pt->len && nbytes != pt->len )
|
||||||
|
log_error("do_plaintext(): wrote %lu bytes but expected %lu bytes\n",
|
||||||
|
(ulong)nbytes, (ulong)pt->len );
|
||||||
|
}
|
||||||
|
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user