diff --git a/g10/free-packet.c b/g10/free-packet.c index 2ca1d3bc2..6038d262e 100644 --- a/g10/free-packet.c +++ b/g10/free-packet.c @@ -114,11 +114,8 @@ release_public_key_parts (PKT_public_key *pk) xfree (pk->prefs); pk->prefs = NULL; } - if (pk->user_id) - { - free_user_id (pk->user_id); - pk->user_id = NULL; - } + free_user_id (pk->user_id); + pk->user_id = NULL; if (pk->revkey) { xfree(pk->revkey); @@ -293,6 +290,9 @@ free_comment( PKT_comment *rem ) void free_attributes(PKT_user_id *uid) { + if (!uid) + return; + xfree(uid->attribs); xfree(uid->attrib_data); @@ -304,70 +304,94 @@ free_attributes(PKT_user_id *uid) void free_user_id (PKT_user_id *uid) { - log_assert (uid->ref > 0); - if (--uid->ref) - return; + if (!uid) + return; - free_attributes(uid); - xfree (uid->prefs); - xfree (uid->namehash); - xfree (uid->mbox); - xfree (uid); + log_assert (uid->ref > 0); + if (--uid->ref) + return; + + free_attributes(uid); + xfree (uid->prefs); + xfree (uid->namehash); + xfree (uid->mbox); + xfree (uid); } void free_compressed( PKT_compressed *zd ) { - if( zd->buf ) { /* have to skip some bytes */ - /* don't have any information about the length, so - * we assume this is the last packet */ - while( iobuf_read( zd->buf, NULL, 1<<30 ) != -1 ) - ; + if (!zd) + return; + + if (zd->buf) + { + /* We need to skip some bytes. Because don't have any + * information about the length, so we assume this is the last + * packet */ + while (iobuf_read( zd->buf, NULL, 1<<30 ) != -1) + ; } - xfree(zd); + xfree(zd); } void free_encrypted( PKT_encrypted *ed ) { - if( ed->buf ) { /* have to skip some bytes */ - if( ed->is_partial ) { - while( iobuf_read( ed->buf, NULL, 1<<30 ) != -1 ) - ; + if (!ed) + return; + + if (ed->buf) + { + /* We need to skip some bytes. */ + if (ed->is_partial) + { + while (iobuf_read( ed->buf, NULL, 1<<30 ) != -1) + ; } - else { - while( ed->len ) { /* skip the packet */ - int n = iobuf_read( ed->buf, NULL, ed->len ); - if( n == -1 ) - ed->len = 0; - else - ed->len -= n; - } + else + { + while (ed->len) + { + /* Skip the packet. */ + int n = iobuf_read( ed->buf, NULL, ed->len ); + if (n == -1) + ed->len = 0; + else + ed->len -= n; + } } } - xfree(ed); + xfree (ed); } void free_plaintext( PKT_plaintext *pt ) { - if( pt->buf ) { /* have to skip some bytes */ - if( pt->is_partial ) { - while( iobuf_read( pt->buf, NULL, 1<<30 ) != -1 ) - ; - } - else { - while( pt->len ) { /* skip the packet */ - int n = iobuf_read( pt->buf, NULL, pt->len ); - if( n == -1 ) - pt->len = 0; - else - pt->len -= n; - } + if (!pt) + return; + + if (pt->buf) + { /* We need to skip some bytes. */ + if (pt->is_partial) + { + while (iobuf_read( pt->buf, NULL, 1<<30 ) != -1) + ; + } + else + { + while( pt->len ) + { /* Skip the packet. */ + int n = iobuf_read( pt->buf, NULL, pt->len ); + if (n == -1) + pt->len = 0; + else + pt->len -= n; + } } } - xfree(pt); + xfree (pt); } /**************** diff --git a/g10/getkey.c b/g10/getkey.c index 5792302fc..f0e33c596 100644 --- a/g10/getkey.c +++ b/g10/getkey.c @@ -1602,29 +1602,25 @@ get_best_pubkey_byname (ctrl_t ctrl, GETKEY_CTX *retctx, PKT_public_key *pk, { /* New key is better. */ release_public_key_parts (&best.key); - if (best.uid) - free_user_id (best.uid); + free_user_id (best.uid); best = new; } else if (diff > 0) { /* Old key is better. */ release_public_key_parts (&new.key); - if (new.uid) - free_user_id (new.uid); + free_user_id (new.uid); } else { /* A tie. Keep the old key. */ release_public_key_parts (&new.key); - if (new.uid) - free_user_id (new.uid); + free_user_id (new.uid); } } getkey_end (ctx); ctx = NULL; - if (best.uid) - free_user_id (best.uid); + free_user_id (best.uid); if (best.valid) { @@ -3604,8 +3600,7 @@ finish_lookup (kbnode_t keyblock, unsigned int req_usage, int want_exact, if (latest_key) { pk = latest_key->pkt->pkt.public_key; - if (pk->user_id) - free_user_id (pk->user_id); + free_user_id (pk->user_id); pk->user_id = scopy_user_id (foundu); }