X-Git-Url: https://the.earth.li/gitweb/?p=onak.git;a=blobdiff_plain;f=merge.c;h=305c60a740aab0819370b428a05fa7d2364e3162;hp=118e757737796871352c9ce2a2b421a2b5c19850;hb=adc800dbc424a1e246dd4a82a0c2e88eeda25531;hpb=b3fb0618da777d1ce58418ab36bc4321f5cf77ef diff --git a/merge.c b/merge.c index 118e757..305c60a 100644 --- a/merge.c +++ b/merge.c @@ -1,23 +1,33 @@ /* * merge.c - Routines to merge OpenPGP public keys. * - * Jonathan McDowell + * Copyright 2002-2005,2007,2011 Jonathan McDowell * - * Copyright 2002-2005 Project Purple + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the Free + * Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . */ +#include #include #include #include #include "decodekey.h" -#include "keydb.h" #include "keyid.h" #include "keystructs.h" #include "ll.h" -#include "log.h" #include "mem.h" #include "merge.h" +#include "onak.h" /** * compare_packets - Check to see if 2 OpenPGP packets are the same. @@ -199,7 +209,7 @@ int merge_packet_sigs(struct openpgp_signedpacket_list *old, struct openpgp_packet_list *curpacket = NULL; struct openpgp_packet_list *nextpacket = NULL; - log_assert(compare_packets(old->packet, new->packet) == 0); + assert(compare_packets(old->packet, new->packet) == 0); curpacket = new->sigs; while (curpacket != NULL) { @@ -219,7 +229,7 @@ int merge_packet_sigs(struct openpgp_signedpacket_list *old, if (lastpacket != NULL) { lastpacket->next = curpacket->next; } else { - log_assert(curpacket == new->sigs); + assert(curpacket == new->sigs); new->sigs = curpacket->next; } curpacket->next = NULL; @@ -316,13 +326,20 @@ int merge_keys(struct openpgp_publickey *a, struct openpgp_publickey *b) struct openpgp_packet_list *curpacket = NULL; struct openpgp_packet_list *lastpacket = NULL; struct openpgp_packet_list *nextpacket = NULL; + uint64_t keya, keyb; if (a == NULL || b == NULL) { /* * Do nothing. */ - rc = 1; - } else if (get_keyid(a) != get_keyid(b)) { + return 1; + } + + if (get_keyid(a, &keya) != ONAK_E_OK) { + return 1; + } else if (get_keyid(b, &keyb) != ONAK_E_OK) { + return 1; + } else if (keya != keyb) { /* * Key IDs are different. */ @@ -344,7 +361,7 @@ int merge_keys(struct openpgp_publickey *a, struct openpgp_publickey *b) if (lastpacket != NULL) { lastpacket->next = curpacket->next; } else { - log_assert(curpacket == b->sigs); + assert(curpacket == b->sigs); b->sigs = curpacket->next; } curpacket->next = NULL;