aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Shaw <[email protected]>2006-03-09 01:15:18 +0000
committerDavid Shaw <[email protected]>2006-03-09 01:15:18 +0000
commit0f7b4371b2d19108668f4a3a055ac62c831cc3d3 (patch)
tree4804b7196d65a0261a39a0a7e77514ca918c6f0d
parent* packet.h, build-packet.c (sig_to_notation), keygen.c (diff)
downloadgnupg-0f7b4371b2d19108668f4a3a055ac62c831cc3d3.tar.gz
gnupg-0f7b4371b2d19108668f4a3a055ac62c831cc3d3.zip
* packet.h, build-packet.c (sig_to_notation), keygen.c
(keygen_add_notations): Provide printable text for non-human-readable notation values.
Diffstat (limited to '')
-rw-r--r--g10/ChangeLog4
-rw-r--r--g10/build-packet.c14
-rw-r--r--g10/keygen.c6
-rw-r--r--g10/packet.h4
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;