diff options
Diffstat (limited to '')
-rw-r--r-- | g10/ChangeLog | 4 | ||||
-rw-r--r-- | g10/build-packet.c | 14 | ||||
-rw-r--r-- | g10/keygen.c | 6 | ||||
-rw-r--r-- | g10/packet.h | 4 |
4 files changed, 20 insertions, 8 deletions
diff --git a/g10/ChangeLog b/g10/ChangeLog index 421891dac..345dfdda8 100644 --- a/g10/ChangeLog +++ b/g10/ChangeLog @@ -1,6 +1,10 @@ 2006-03-08 David Shaw <[email protected]> * packet.h, build-packet.c (sig_to_notation), keygen.c + (keygen_add_notations): Provide printable text for + non-human-readable notation values. + + * packet.h, build-packet.c (sig_to_notation), keygen.c (keygen_add_notations): Tweak to handle non-human-readable notation values. diff --git a/g10/build-packet.c b/g10/build-packet.c index ea8a40041..2ffc758e2 100644 --- a/g10/build-packet.c +++ b/g10/build-packet.c @@ -1000,17 +1000,21 @@ sig_to_notation(PKT_signature *sig) if(p[0]&0x80) { - n->flags.human=1; n->value=xmalloc(n2+1); + memcpy(n->value,&p[8+n1],n2); n->value[n2]='\0'; } else { - n->value=xmalloc(n2); + n->bdat=xmalloc(n2); n->blen=n2; - } + memcpy(n->bdat,&p[8+n1],n2); - memcpy(n->value,&p[8+n1],n2); + n->value=xmalloc(2+strlen(_("not human readable"))+2+1); + strcpy(n->value,"[ "); + strcat(n->value,_("not human readable")); + strcat(n->value," ]"); + } n->flags.critical=crit; @@ -1030,6 +1034,8 @@ free_notation(struct notation *notation) xfree(n->name); xfree(n->value); + xfree(n->altvalue); + xfree(n->bdat); notation=n->next; xfree(n); } diff --git a/g10/keygen.c b/g10/keygen.c index 0ef2499b6..971f8398c 100644 --- a/g10/keygen.c +++ b/g10/keygen.c @@ -708,7 +708,7 @@ keygen_add_notations(PKT_signature *sig,void *opaque) n1=strlen(notation->name); if(notation->altvalue) n2=strlen(notation->altvalue); - else if(!notation->flags.human) + else if(notation->bdat) n2=notation->blen; else n2=strlen(notation->value); @@ -716,7 +716,7 @@ keygen_add_notations(PKT_signature *sig,void *opaque) buf = xmalloc( 8 + n1 + n2 ); /* human readable or not */ - buf[0] = notation->flags.human?0x80:0; + buf[0] = notation->bdat?0:0x80; buf[1] = buf[2] = buf[3] = 0; buf[4] = n1 >> 8; buf[5] = n1; @@ -725,6 +725,8 @@ keygen_add_notations(PKT_signature *sig,void *opaque) memcpy(buf+8, notation->name, n1 ); if(notation->altvalue) memcpy(buf+8+n1, notation->altvalue, n2 ); + else if(notation->bdat) + memcpy(buf+8+n1, notation->bdat, n2 ); else memcpy(buf+8+n1, notation->value, n2 ); build_sig_subpkt( sig, SIGSUBPKT_NOTATION | diff --git a/g10/packet.h b/g10/packet.h index 7e0f9d0ac..f3181332f 100644 --- a/g10/packet.h +++ b/g10/packet.h @@ -411,12 +411,12 @@ struct notation { char *name; char *value; - size_t blen; char *altvalue; + unsigned char *bdat; + size_t blen; struct { unsigned int critical:1; - unsigned int human:1; unsigned int ignore:1; } flags; struct notation *next; |