1
0
Fork 0
mirror of git://git.gnupg.org/gnupg.git synced 2025-07-03 22:56:33 +02:00

* build-packet.c (write_header2): Remove call to start old gpg partial

length mode and change all callers. (do_plaintext): Turn off partial
length encoding now that we're done writing the packet. (do_comment,
do_user_id): Try for a headerlen of 2 since that's the smallest and most
likely encoding for these packets.

* parse-packet.c (parse): Remove call to start old gpg partial length
mode.
This commit is contained in:
David Shaw 2004-03-03 16:38:34 +00:00
parent 2d7fe1d3a1
commit 56a6945261
3 changed files with 88 additions and 76 deletions

View file

@ -383,42 +383,34 @@ parse( IOBUF inp, PACKET *pkt, int onlykeypkts, off_t *retpos,
}
}
}
else {
else
{
pkttype = (ctb>>2)&0xf;
lenbytes = ((ctb&3)==3)? 0 : (1<<(ctb & 3));
if( !lenbytes ) {
if( !lenbytes )
{
pktlen = 0; /* don't know the value */
/* This isn't really partial, but we can treat it the same
in a "read until the end" sort of way. */
partial=1;
switch (pkttype) {
case PKT_ENCRYPTED:
case PKT_PLAINTEXT:
/* These partial length encodings are from an very
early GnuPG release and deprecated. However we
still support them read-wise. Note, that we should
not allow them for any key related packets, because
this might render a keyring unusable if an errenous
packet indicated this mode but not complying to it
gets imported. */
iobuf_set_block_mode(inp, 1);
break;
case PKT_COMPRESSED:
break; /* the orginal pgp 2 way. */
default:
log_error ("%s: old style partial length for invalid"
" packet type %d\n", iobuf_where(inp), pkttype );
rc = G10ERR_INVALID_PACKET;
goto leave;
}
}
else {
for( ; lenbytes; lenbytes-- ) {
if(pkttype!=PKT_ENCRYPTED && pkttype!=PKT_PLAINTEXT
&& pkttype!=PKT_COMPRESSED)
{
log_error ("%s: indeterminate length for invalid"
" packet type %d\n", iobuf_where(inp), pkttype );
rc = G10ERR_INVALID_PACKET;
goto leave;
}
}
else
{
for( ; lenbytes; lenbytes-- )
{
pktlen <<= 8;
pktlen |= hdr[hdrlen++] = iobuf_get_noeof(inp);
}
}
}
}
}
}
if (pktlen == 0xffffffff) {
/* with a some probability this is caused by a problem in the