mirror of
git://git.gnupg.org/gnupg.git
synced 2024-11-11 21:48:50 +01:00
g10/decrypt-data: use fill_buffer in more places
* g10/decrypt-data.c (mdc_decode_filter, decode_filter): Use fill_buffer. -- Signed-off-by: Jussi Kivilinna <jussi.kivilinna@iki.fi>
This commit is contained in:
parent
69930f6884
commit
e2b9095de3
@ -873,7 +873,6 @@ mdc_decode_filter (void *opaque, int control, IOBUF a,
|
|||||||
decode_filter_ctx_t dfx = opaque;
|
decode_filter_ctx_t dfx = opaque;
|
||||||
size_t n, size = *ret_len;
|
size_t n, size = *ret_len;
|
||||||
int rc = 0;
|
int rc = 0;
|
||||||
int c;
|
|
||||||
|
|
||||||
/* Note: We need to distinguish between a partial and a fixed length
|
/* Note: We need to distinguish between a partial and a fixed length
|
||||||
packet. The first is the usual case as created by GPG. However
|
packet. The first is the usual case as created by GPG. However
|
||||||
@ -894,25 +893,7 @@ mdc_decode_filter (void *opaque, int control, IOBUF a,
|
|||||||
log_assert (size > 44); /* Our code requires at least this size. */
|
log_assert (size > 44); /* Our code requires at least this size. */
|
||||||
|
|
||||||
/* Get at least 22 bytes and put it ahead in the buffer. */
|
/* Get at least 22 bytes and put it ahead in the buffer. */
|
||||||
if (dfx->partial)
|
n = fill_buffer (dfx, a, buf, 44, 22);
|
||||||
{
|
|
||||||
for (n=22; n < 44; n++)
|
|
||||||
{
|
|
||||||
if ( (c = iobuf_get(a)) == -1 )
|
|
||||||
break;
|
|
||||||
buf[n] = c;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
for (n=22; n < 44 && dfx->length; n++, dfx->length--)
|
|
||||||
{
|
|
||||||
c = iobuf_get (a);
|
|
||||||
if (c == -1)
|
|
||||||
break; /* Premature EOF. */
|
|
||||||
buf[n] = c;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (n == 44)
|
if (n == 44)
|
||||||
{
|
{
|
||||||
/* We have enough stuff - flush the holdback buffer. */
|
/* We have enough stuff - flush the holdback buffer. */
|
||||||
@ -923,37 +904,11 @@ mdc_decode_filter (void *opaque, int control, IOBUF a,
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
||||||
memcpy (buf, dfx->holdback, 22);
|
memcpy (buf, dfx->holdback, 22);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Fill up the buffer. */
|
/* Fill up the buffer. */
|
||||||
if (dfx->partial)
|
n = fill_buffer (dfx, a, buf, size, n);
|
||||||
{
|
|
||||||
for (; n < size; n++ )
|
|
||||||
{
|
|
||||||
if ( (c = iobuf_get(a)) == -1 )
|
|
||||||
{
|
|
||||||
dfx->eof_seen = 1; /* Normal EOF. */
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
buf[n] = c;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
for (; n < size && dfx->length; n++, dfx->length--)
|
|
||||||
{
|
|
||||||
c = iobuf_get(a);
|
|
||||||
if (c == -1)
|
|
||||||
{
|
|
||||||
dfx->eof_seen = 3; /* Premature EOF. */
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
buf[n] = c;
|
|
||||||
}
|
|
||||||
if (!dfx->length)
|
|
||||||
dfx->eof_seen = 1; /* Normal EOF. */
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Move the trailing 22 bytes back to the holdback buffer. We
|
/* Move the trailing 22 bytes back to the holdback buffer. We
|
||||||
have at least 44 bytes thus a memmove is not needed. */
|
have at least 44 bytes thus a memmove is not needed. */
|
||||||
@ -1008,7 +963,7 @@ decode_filter( void *opaque, int control, IOBUF a, byte *buf, size_t *ret_len)
|
|||||||
decode_filter_ctx_t fc = opaque;
|
decode_filter_ctx_t fc = opaque;
|
||||||
size_t size = *ret_len;
|
size_t size = *ret_len;
|
||||||
size_t n;
|
size_t n;
|
||||||
int c, rc = 0;
|
int rc = 0;
|
||||||
|
|
||||||
|
|
||||||
if ( control == IOBUFCTRL_UNDERFLOW && fc->eof_seen )
|
if ( control == IOBUFCTRL_UNDERFLOW && fc->eof_seen )
|
||||||
@ -1020,34 +975,7 @@ decode_filter( void *opaque, int control, IOBUF a, byte *buf, size_t *ret_len)
|
|||||||
{
|
{
|
||||||
log_assert (a);
|
log_assert (a);
|
||||||
|
|
||||||
if (fc->partial)
|
n = fill_buffer (fc, a, buf, size, 0);
|
||||||
{
|
|
||||||
for (n=0; n < size; n++ )
|
|
||||||
{
|
|
||||||
c = iobuf_get(a);
|
|
||||||
if (c == -1)
|
|
||||||
{
|
|
||||||
fc->eof_seen = 1; /* Normal EOF. */
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
buf[n] = c;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
for (n=0; n < size && fc->length; n++, fc->length--)
|
|
||||||
{
|
|
||||||
c = iobuf_get(a);
|
|
||||||
if (c == -1)
|
|
||||||
{
|
|
||||||
fc->eof_seen = 3; /* Premature EOF. */
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
buf[n] = c;
|
|
||||||
}
|
|
||||||
if (!fc->length)
|
|
||||||
fc->eof_seen = 1; /* Normal EOF. */
|
|
||||||
}
|
|
||||||
if (n)
|
if (n)
|
||||||
{
|
{
|
||||||
if (fc->cipher_hd)
|
if (fc->cipher_hd)
|
||||||
|
Loading…
Reference in New Issue
Block a user