aboutsummaryrefslogtreecommitdiffstats
path: root/g10/sign.c
diff options
context:
space:
mode:
Diffstat (limited to 'g10/sign.c')
-rw-r--r--g10/sign.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/g10/sign.c b/g10/sign.c
index db458236f..25f08faf4 100644
--- a/g10/sign.c
+++ b/g10/sign.c
@@ -1300,6 +1300,18 @@ update_keysig_packet( PKT_signature **ret_sig,
/* create a new signature packet */
sig = copy_signature (NULL, orig_sig);
+ /* We've copied the signature, subpackets and all, but we don't
+ want any old policies or notations coming over: the signature
+ is being remade, so these need to be restated as well. Note
+ that other subpackets like backsigs come over as well, but we
+ want to keep those. We don't delete policies or notations from
+ the unhashed area - since we don't put them there, this is a
+ case of not messing about with things that we are not
+ responsible for. */
+
+ delete_sig_subpkt(sig->hashed,SIGSUBPKT_POLICY);
+ delete_sig_subpkt(sig->hashed,SIGSUBPKT_NOTATION);
+
/* We need to create a new timestamp so that new sig expiration
calculations are done correctly... */
sig->timestamp=make_timestamp();