mirror of
git://git.gnupg.org/gnupg.git
synced 2024-12-24 10:39:57 +01:00
* build-packet.c (build_sig_subpkt): Handle setting sig flags for certain
subpacket types (notation, policy url, exportable, revocable). keyedit.c (sign_mk_attrib): Flags no longer need to be set here. * packet.h, parse-packet.c (parse_one_sig_subpkt), build-packet.c (build_sig_subpkt): Call parse_one_sig_subpkt to sanity check buffer lengths before building a sig subpacket.
This commit is contained in:
parent
8d5dad0ac3
commit
e4b2f8da41
@ -1,3 +1,14 @@
|
|||||||
|
2002-05-27 David Shaw <dshaw@jabberwocky.com>
|
||||||
|
|
||||||
|
* build-packet.c (build_sig_subpkt): Handle setting sig flags for
|
||||||
|
certain subpacket types (notation, policy url, exportable,
|
||||||
|
revocable). keyedit.c (sign_mk_attrib): Flags no longer need to
|
||||||
|
be set here.
|
||||||
|
|
||||||
|
* packet.h, parse-packet.c (parse_one_sig_subpkt), build-packet.c
|
||||||
|
(build_sig_subpkt): Call parse_one_sig_subpkt to sanity check
|
||||||
|
buffer lengths before building a sig subpacket.
|
||||||
|
|
||||||
2002-05-26 David Shaw <dshaw@jabberwocky.com>
|
2002-05-26 David Shaw <dshaw@jabberwocky.com>
|
||||||
|
|
||||||
* sign.c (mk_notation_and_policy): Include secret key to enable %s
|
* sign.c (mk_notation_and_policy): Include secret key to enable %s
|
||||||
|
@ -706,6 +706,10 @@ build_sig_subpkt (PKT_signature *sig, sigsubpkttype_t type,
|
|||||||
critical = (type & SIGSUBPKT_FLAG_CRITICAL);
|
critical = (type & SIGSUBPKT_FLAG_CRITICAL);
|
||||||
type &= ~SIGSUBPKT_FLAG_CRITICAL;
|
type &= ~SIGSUBPKT_FLAG_CRITICAL;
|
||||||
|
|
||||||
|
/* Sanity check buffer sizes */
|
||||||
|
if(parse_one_sig_subpkt(buffer,buflen,type)<0)
|
||||||
|
BUG();
|
||||||
|
|
||||||
switch(type)
|
switch(type)
|
||||||
{
|
{
|
||||||
case SIGSUBPKT_NOTATION:
|
case SIGSUBPKT_NOTATION:
|
||||||
@ -721,6 +725,36 @@ build_sig_subpkt (PKT_signature *sig, sigsubpkttype_t type,
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Any special magic that needs to be done for this type so the
|
||||||
|
packet doesn't need to be reparsed? */
|
||||||
|
switch(type)
|
||||||
|
{
|
||||||
|
case SIGSUBPKT_NOTATION:
|
||||||
|
sig->flags.notation=1;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case SIGSUBPKT_POLICY:
|
||||||
|
sig->flags.policy_url=1;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case SIGSUBPKT_EXPORTABLE:
|
||||||
|
if(buffer[0])
|
||||||
|
sig->flags.exportable=1;
|
||||||
|
else
|
||||||
|
sig->flags.exportable=0;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case SIGSUBPKT_REVOCABLE:
|
||||||
|
if(buffer[0])
|
||||||
|
sig->flags.revocable=1;
|
||||||
|
else
|
||||||
|
sig->flags.revocable=0;
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
if( (buflen+1) >= 8384 )
|
if( (buflen+1) >= 8384 )
|
||||||
nlen = 5; /* write 5 byte length header */
|
nlen = 5; /* write 5 byte length header */
|
||||||
else if( (buflen+1) >= 192 )
|
else if( (buflen+1) >= 192 )
|
||||||
|
@ -242,13 +242,11 @@ sign_mk_attrib( PKT_signature *sig, void *opaque )
|
|||||||
byte buf[8];
|
byte buf[8];
|
||||||
|
|
||||||
if( attrib->non_exportable ) {
|
if( attrib->non_exportable ) {
|
||||||
sig->flags.exportable=0;
|
|
||||||
buf[0] = 0; /* not exportable */
|
buf[0] = 0; /* not exportable */
|
||||||
build_sig_subpkt( sig, SIGSUBPKT_EXPORTABLE, buf, 1 );
|
build_sig_subpkt( sig, SIGSUBPKT_EXPORTABLE, buf, 1 );
|
||||||
}
|
}
|
||||||
|
|
||||||
if( attrib->non_revocable ) {
|
if( attrib->non_revocable ) {
|
||||||
sig->flags.revocable=0;
|
|
||||||
buf[0] = 0; /* not revocable */
|
buf[0] = 0; /* not revocable */
|
||||||
build_sig_subpkt( sig, SIGSUBPKT_REVOCABLE, buf, 1 );
|
build_sig_subpkt( sig, SIGSUBPKT_REVOCABLE, buf, 1 );
|
||||||
}
|
}
|
||||||
|
@ -394,6 +394,7 @@ const byte *parse_sig_subpkt ( const subpktarea_t *buffer,
|
|||||||
const byte *parse_sig_subpkt2 ( PKT_signature *sig,
|
const byte *parse_sig_subpkt2 ( PKT_signature *sig,
|
||||||
sigsubpkttype_t reqtype,
|
sigsubpkttype_t reqtype,
|
||||||
size_t *ret_n );
|
size_t *ret_n );
|
||||||
|
int parse_one_sig_subpkt( const byte *buffer, size_t n, int type );
|
||||||
void parse_revkeys(PKT_signature *sig);
|
void parse_revkeys(PKT_signature *sig);
|
||||||
int parse_attribute_subpkts(PKT_user_id *uid);
|
int parse_attribute_subpkts(PKT_user_id *uid);
|
||||||
void make_attribute_uidname(PKT_user_id *uid);
|
void make_attribute_uidname(PKT_user_id *uid);
|
||||||
|
@ -904,7 +904,7 @@ dump_sig_subpkt( int hashed, int type, int critical,
|
|||||||
* -2 unsupported type
|
* -2 unsupported type
|
||||||
* -3 subpacket too short
|
* -3 subpacket too short
|
||||||
*/
|
*/
|
||||||
static int
|
int
|
||||||
parse_one_sig_subpkt( const byte *buffer, size_t n, int type )
|
parse_one_sig_subpkt( const byte *buffer, size_t n, int type )
|
||||||
{
|
{
|
||||||
switch( type ) {
|
switch( type ) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user