aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>2017-03-03 08:50:40 +0000
committerWerner Koch <[email protected]>2017-03-03 08:50:40 +0000
commit5f6f3f5cae8a95ed469129f9677782c17951dab3 (patch)
tree84e0a8e097016b53e76c9c30d3679dbba723947a
parentgpg: Add new variables to the import and export filters. (diff)
downloadgnupg-5f6f3f5cae8a95ed469129f9677782c17951dab3.tar.gz
gnupg-5f6f3f5cae8a95ed469129f9677782c17951dab3.zip
gpg: Fix possible segv when attribute packets are filtered.
* g10/import.c (impex_filter_getval): Handle PKT_ATTRIBUTE the same as PKT_USER_ID (apply_drop_sig_filter): Ditto. -- The old code was plainly wrong in that it considered PKT_ATTRIBUTE to use a PKT_signature object. Signed-off-by: Werner Koch <[email protected]>
Diffstat (limited to '')
-rw-r--r--g10/import.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/g10/import.c b/g10/import.c
index 9fd16c87f..6383d7083 100644
--- a/g10/import.c
+++ b/g10/import.c
@@ -1173,7 +1173,8 @@ impex_filter_getval (void *cookie, const char *propname)
static char numbuf[20];
const char *result;
- if (node->pkt->pkttype == PKT_USER_ID)
+ if (node->pkt->pkttype == PKT_USER_ID
+ || node->pkt->pkttype == PKT_ATTRIBUTE)
{
PKT_user_id *uid = node->pkt->pkt.user_id;
@@ -1202,8 +1203,7 @@ impex_filter_getval (void *cookie, const char *propname)
else
result = NULL;
}
- else if (node->pkt->pkttype == PKT_SIGNATURE
- || node->pkt->pkttype == PKT_ATTRIBUTE)
+ else if (node->pkt->pkttype == PKT_SIGNATURE)
{
PKT_signature *sig = node->pkt->pkt.signature;
@@ -1340,12 +1340,12 @@ apply_drop_sig_filter (kbnode_t keyblock, recsel_expr_t selector)
if (node->pkt->pkttype == PKT_PUBLIC_SUBKEY
|| node->pkt->pkttype == PKT_SECRET_SUBKEY)
break; /* ready. */
- if (node->pkt->pkttype == PKT_USER_ID)
+ if (node->pkt->pkttype == PKT_USER_ID
+ || node->pkt->pkttype == PKT_ATTRIBUTE)
active = 1;
if (!active)
continue;
- if (node->pkt->pkttype != PKT_SIGNATURE
- && node->pkt->pkttype != PKT_ATTRIBUTE)
+ if (node->pkt->pkttype != PKT_SIGNATURE)
continue;
sig = node->pkt->pkt.signature;