Fix dkim_cur_signer undupe logic
authorTom Kistner <tom@duncanthrax.net>
Thu, 15 Oct 2009 13:49:43 +0000 (13:49 +0000)
committerTom Kistner <tom@duncanthrax.net>
Thu, 15 Oct 2009 13:49:43 +0000 (13:49 +0000)
src/src/receive.c

index d268db62597c32258bcd2185a439cfcaf60fb25f..0cc8832c39f53c3246740c73765f04d163cba0ba 100644 (file)
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/src/src/receive.c,v 1.48 2009/10/15 09:22:44 tom Exp $ */
+/* $Cambridge: exim/src/src/receive.c,v 1.49 2009/10/15 13:49:43 tom Exp $ */
 
 /*************************************************
 *     Exim - an Internet mail transport agent    *
 
 /*************************************************
 *     Exim - an Internet mail transport agent    *
@@ -3007,17 +3007,19 @@ else
                appears in the expanded list. */
             if (seen_items != NULL)
               {
                appears in the expanded list. */
             if (seen_items != NULL)
               {
+              uschar *seen_items_list = seen_items;
               if (match_isinlist(item,
               if (match_isinlist(item,
-                    &seen_items,0,NULL,NULL,MCL_STRING,TRUE,NULL) == OK)
+                    &seen_items_list,0,NULL,NULL,MCL_STRING,TRUE,NULL) == OK)
                 {
                 DEBUG(D_receive)
                   debug_printf("acl_smtp_dkim: skipping signer %s, already seen\n", item);
                 continue;
                 }
                 {
                 DEBUG(D_receive)
                   debug_printf("acl_smtp_dkim: skipping signer %s, already seen\n", item);
                 continue;
                 }
-              string_cat(seen_items,&seen_items_size,&seen_items_offset,":",1);
+              seen_items = string_append(seen_items,&seen_items_size,&seen_items_offset,1,":");
               }
 
               }
 
-            string_cat(seen_items,&seen_items_size,&seen_items_offset,item,Ustrlen(item));
+            seen_items = string_append(seen_items,&seen_items_size,&seen_items_offset,1,item);
+            seen_items[seen_items_offset] = '\0';
 
             DEBUG(D_receive)
               debug_printf("calling acl_smtp_dkim for dkim_cur_signer=%s\n", item);
 
             DEBUG(D_receive)
               debug_printf("calling acl_smtp_dkim for dkim_cur_signer=%s\n", item);