[svn] GnuPG - r4472 - trunk/g10
svn author dshaw
cvs at cvs.gnupg.org
Fri Apr 6 05:46:04 CEST 2007
Author: dshaw
Date: 2007-04-06 05:46:03 +0200 (Fri, 06 Apr 2007)
New Revision: 4472
Modified:
trunk/g10/ChangeLog
trunk/g10/parse-packet.c
Log:
* parse-packet.c (parse_marker): New. Enforce that the marker
contains 'P', 'G', 'P', and nothing but. (parse): Call it here.
(skip_packet): No longer need to handle marker packets here.
Modified: trunk/g10/ChangeLog
===================================================================
--- trunk/g10/ChangeLog 2007-04-04 04:00:20 UTC (rev 4471)
+++ trunk/g10/ChangeLog 2007-04-06 03:46:03 UTC (rev 4472)
@@ -1,3 +1,12 @@
+2007-04-05 David Shaw <dshaw at jabberwocky.com>
+
+ From STABLE-BRANCH-1-4
+
+ * parse-packet.c (parse_marker): New. Enforce that the marker
+ contains 'P', 'G', 'P', and nothing but.
+ (parse): Call it here.
+ (skip_packet): No longer need to handle marker packets here.
+
2007-03-14 David Shaw <dshaw at jabberwocky.com>
From STABLE-BRANCH-1-4
Modified: trunk/g10/parse-packet.c
===================================================================
--- trunk/g10/parse-packet.c 2007-04-04 04:00:20 UTC (rev 4471)
+++ trunk/g10/parse-packet.c 2007-04-06 03:46:03 UTC (rev 4472)
@@ -1,6 +1,6 @@
/* parse-packet.c - read packets
- * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
- * 2006 Free Software Foundation, Inc.
+ * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
+ * 2007 Free Software Foundation, Inc.
*
* This file is part of GnuPG.
*
@@ -52,6 +52,7 @@
static void skip_packet( IOBUF inp, int pkttype,
unsigned long pktlen, int partial );
static void *read_rest( IOBUF inp, size_t pktlen, int partial );
+static int parse_marker( IOBUF inp, int pkttype, unsigned long pktlen );
static int parse_symkeyenc( IOBUF inp, int pkttype, unsigned long pktlen,
PACKET *packet );
static int parse_pubkeyenc( IOBUF inp, int pkttype, unsigned long pktlen,
@@ -579,6 +580,9 @@
case PKT_GPG_CONTROL:
rc = parse_gpg_control(inp, pkttype, pktlen, pkt, partial );
break;
+ case PKT_MARKER:
+ rc = parse_marker(inp,pkttype,pktlen);
+ break;
default:
skip_packet(inp, pkttype, pktlen, partial);
break;
@@ -644,32 +648,31 @@
static void
skip_packet( IOBUF inp, int pkttype, unsigned long pktlen, int partial )
{
- if( list_mode ) {
- if( pkttype == PKT_MARKER )
- fputs(":marker packet:\n", listfp );
- else
- fprintf (listfp, ":unknown packet: type %2d, length %lu\n",
- pkttype, pktlen);
- if( pkttype ) {
- int c, i=0 ;
- if( pkttype != PKT_MARKER )
- fputs("dump:", listfp );
- if( partial ) {
- while( (c=iobuf_get(inp)) != -1 )
- dump_hex_line(c, &i);
+ if( list_mode )
+ {
+ fprintf (listfp, ":unknown packet: type %2d, length %lu\n",
+ pkttype, pktlen);
+ if( pkttype )
+ {
+ int c, i=0 ;
+ fputs("dump:", listfp );
+ if( partial )
+ {
+ while( (c=iobuf_get(inp)) != -1 )
+ dump_hex_line(c, &i);
}
- else {
- for( ; pktlen; pktlen-- )
- dump_hex_line(iobuf_get(inp), &i);
+ else
+ {
+ for( ; pktlen; pktlen-- )
+ dump_hex_line(iobuf_get(inp), &i);
}
- putc ('\n', listfp);
- return;
+ putc ('\n', listfp);
+ return;
}
}
- iobuf_skip_rest(inp,pktlen,partial);
+ iobuf_skip_rest(inp,pktlen,partial);
}
-
static void *
read_rest( IOBUF inp, size_t pktlen, int partial )
{
@@ -688,8 +691,41 @@
return p;
}
+static int
+parse_marker( IOBUF inp, int pkttype, unsigned long pktlen )
+{
+ if(pktlen!=3)
+ goto fail;
+ if(iobuf_get(inp)!='P')
+ {
+ pktlen--;
+ goto fail;
+ }
+ if(iobuf_get(inp)!='G')
+ {
+ pktlen--;
+ goto fail;
+ }
+
+ if(iobuf_get(inp)!='P')
+ {
+ pktlen--;
+ goto fail;
+ }
+
+ if(list_mode)
+ fputs(":marker packet: PGP\n", listfp );
+
+ return 0;
+
+ fail:
+ log_error("invalid marker packet\n");
+ iobuf_skip_rest(inp,pktlen,0);
+ return G10ERR_INVALID_PACKET;
+}
+
static int
parse_symkeyenc( IOBUF inp, int pkttype, unsigned long pktlen, PACKET *packet )
{
More information about the Gnupg-commits
mailing list