X-Git-Url: https://git.sommitrealweird.co.uk/onak.git/blobdiff_plain/5913c95f2c7abf4c3cb06e27d384d80fb4c83547..ae384229c538b20b429ea640ec30071ae944c0e7:/decodekey.c diff --git a/decodekey.c b/decodekey.c index 6a16604..fac501e 100644 --- a/decodekey.c +++ b/decodekey.c @@ -4,6 +4,8 @@ * Jonathan McDowell * * Copyright 2002 Project Purple + * + * $Id: decodekey.c,v 1.4 2003/09/28 21:07:50 noodles Exp $ */ #include @@ -18,6 +20,7 @@ #include "keyid.h" #include "keystructs.h" #include "ll.h" +#include "log.h" /* * parse_subpackets - Parse the subpackets of a Type 4 signature. @@ -53,13 +56,13 @@ int parse_subpackets(unsigned char *data, uint64_t *keyid) packetlen <<= 8; packetlen = data[offset++]; } - switch (data[offset]) { + switch (data[offset] & 0x7F) { case 2: /* * Signature creation time. Might want to output this? */ break; - case 0x83: + case 3: /* * Signature expiration time. Might want to output this? */ @@ -94,10 +97,14 @@ int parse_subpackets(unsigned char *data, uint64_t *keyid) default: /* * We don't care about unrecognized packets unless bit - * 7 is set in which case we prefer an error than - * ignoring it. + * 7 is set in which case we log a major error. */ - assert(!(data[offset] & 0x80)); + if (data[offset] & 0x80) { + logthing(LOGTHING_CRITICAL, + "Critical subpacket type not parsed: 0x%X", + data[offset]); + } + } offset += packetlen; } @@ -206,6 +213,7 @@ char **keyuids(struct openpgp_publickey *key, char **primary) char **uids = NULL; int count = 0; + *primary = NULL; if (key != NULL && key->uids != NULL) { uids = malloc((spsize(key->uids) + 1) * sizeof (char *)); @@ -221,12 +229,13 @@ char **keyuids(struct openpgp_publickey *key, char **primary) curuid = curuid -> next; } uids[count] = NULL; - } - /* - * TODO: Parse subpackets for real primary ID (v4 keys) - */ - if (primary != NULL) { - *primary = uids[0]; + + /* + * TODO: Parse subpackets for real primary ID (v4 keys) + */ + if (primary != NULL) { + *primary = uids[0]; + } } return uids;