David Hill <dh...@mindcry.org> writes: > mail/dkim-milter -- dkim-filter seg faults on strlen(key_data) when > using malloc.conf option 'S'. So, I am unable to use it unless I > remove malloc options. > > This fixes it. > > Please review and commit.
Looks fine to me but I don't use that port. While tracking key_data use I spotted what looks like a copy/pasto (double-free). Test reports? OK? Index: Makefile =================================================================== RCS file: /cvs/ports/mail/dkim-milter/Makefile,v retrieving revision 1.36 diff -u -p -r1.36 Makefile --- Makefile 11 Mar 2013 11:23:50 -0000 1.36 +++ Makefile 13 Oct 2013 23:24:52 -0000 @@ -3,7 +3,7 @@ COMMENT= DKIM milter DISTNAME= dkim-milter-2.8.3 -REVISION = 1 +REVISION = 2 CATEGORIES= mail HOMEPAGE= http://sourceforge.net/projects/dkim-milter/ Index: patches/patch-dkim-filter_dkim-filter_c =================================================================== RCS file: /cvs/ports/mail/dkim-milter/patches/patch-dkim-filter_dkim-filter_c,v retrieving revision 1.10 diff -u -p -r1.10 patch-dkim-filter_dkim-filter_c --- patches/patch-dkim-filter_dkim-filter_c 23 Jan 2009 06:43:07 -0000 1.10 +++ patches/patch-dkim-filter_dkim-filter_c 13 Oct 2013 23:17:10 -0000 @@ -1,7 +1,28 @@ $OpenBSD: patch-dkim-filter_dkim-filter_c,v 1.10 2009/01/23 06:43:07 jasper Exp $ ---- dkim-filter/dkim-filter.c.orig Tue Jan 6 19:39:08 2009 -+++ dkim-filter/dkim-filter.c Thu Jan 22 23:28:54 2009 -@@ -8906,7 +8906,7 @@ main(int argc, char **argv) +- key_data should be NUL-terminated (dkim_sign calls strlen) +- fix double free at reload time +- set unprivileged _dkim-milter user +--- dkim-filter/dkim-filter.c.orig Wed May 27 18:34:05 2009 ++++ dkim-filter/dkim-filter.c Mon Oct 14 01:13:06 2013 +@@ -4872,7 +4872,7 @@ dkimf_loadkeys(char *file, struct dkimf_config *conf) + return -1; + } + +- new->key_data = malloc(s.st_size); ++ new->key_data = calloc(1, s.st_size + 1); + if (new->key_data == NULL) + { + fprintf(stderr, "%s: malloc(): %s\n", +@@ -4950,7 +4950,7 @@ dkimf_freekeys(struct dkimf_config *conf) + if (cur->key_domain != NULL) + free(cur->key_domain); + if (cur->key_data != NULL) +- free(cur->key_domain); ++ free(cur->key_data); + regfree(&cur->key_re); + + free(cur); +@@ -9044,7 +9044,7 @@ main(int argc, char **argv) unsigned long tmpl; const char *args = CMDLINEOPTS; FILE *f; Index: patches/patch-libdkim_dkim_h =================================================================== RCS file: /cvs/ports/mail/dkim-milter/patches/patch-libdkim_dkim_h,v retrieving revision 1.5 diff -u -p -r1.5 patch-libdkim_dkim_h --- patches/patch-libdkim_dkim_h 23 Jan 2009 06:43:07 -0000 1.5 +++ patches/patch-libdkim_dkim_h 13 Oct 2013 23:13:47 -0000 @@ -1,7 +1,7 @@ $OpenBSD: patch-libdkim_dkim_h,v 1.5 2009/01/23 06:43:07 jasper Exp $ ---- libdkim/dkim.h.orig Tue Jan 13 09:22:18 2009 -+++ libdkim/dkim.h Thu Jan 22 23:28:54 2009 -@@ -17,6 +17,10 @@ static char dkim_h_id[] = "@(#)$Id: dkim.h,v 1.197 200 +--- libdkim/dkim.h.orig Tue Apr 7 00:36:09 2009 ++++ libdkim/dkim.h Mon Oct 14 00:55:25 2013 +@@ -17,6 +17,10 @@ static char dkim_h_id[] = "@(#)$Id: dkim.h,v 1.202 200 /* openssl includes */ #include <openssl/sha.h> > Index: Makefile > =================================================================== > RCS file: /cvs/ports/mail/dkim-milter/Makefile,v > retrieving revision 1.36 > diff -u -p -r1.36 Makefile > --- Makefile 11 Mar 2013 11:23:50 -0000 1.36 > +++ Makefile 13 Oct 2013 22:48:24 -0000 > @@ -3,7 +3,7 @@ > COMMENT= DKIM milter > > DISTNAME= dkim-milter-2.8.3 > -REVISION = 1 > +REVISION = 2 > CATEGORIES= mail > HOMEPAGE= http://sourceforge.net/projects/dkim-milter/ > > Index: patches/patch-dkim-filter_dkim-filter_c > =================================================================== > RCS file: > /cvs/ports/mail/dkim-milter/patches/patch-dkim-filter_dkim-filter_c,v > retrieving revision 1.10 > diff -u -p -r1.10 patch-dkim-filter_dkim-filter_c > --- patches/patch-dkim-filter_dkim-filter_c 23 Jan 2009 06:43:07 -0000 > 1.10 > +++ patches/patch-dkim-filter_dkim-filter_c 13 Oct 2013 22:48:24 -0000 > @@ -1,7 +1,16 @@ > $OpenBSD: patch-dkim-filter_dkim-filter_c,v 1.10 2009/01/23 06:43:07 jasper > Exp $ > ---- dkim-filter/dkim-filter.c.orig Tue Jan 6 19:39:08 2009 > -+++ dkim-filter/dkim-filter.c Thu Jan 22 23:28:54 2009 > -@@ -8906,7 +8906,7 @@ main(int argc, char **argv) > +--- dkim-filter/dkim-filter.c.orig Wed May 27 12:34:05 2009 > ++++ dkim-filter/dkim-filter.c Sun Oct 13 18:39:15 2013 > +@@ -4872,7 +4872,7 @@ dkimf_loadkeys(char *file, struct dkimf_config *conf) > + return -1; > + } > + > +- new->key_data = malloc(s.st_size); > ++ new->key_data = calloc(1, s.st_size + 1); > + if (new->key_data == NULL) > + { > + fprintf(stderr, "%s: malloc(): %s\n", > +@@ -9044,7 +9044,7 @@ main(int argc, char **argv) > unsigned long tmpl; > const char *args = CMDLINEOPTS; > FILE *f; > Index: patches/patch-libdkim_dkim_h > =================================================================== > RCS file: /cvs/ports/mail/dkim-milter/patches/patch-libdkim_dkim_h,v > retrieving revision 1.5 > diff -u -p -r1.5 patch-libdkim_dkim_h > --- patches/patch-libdkim_dkim_h 23 Jan 2009 06:43:07 -0000 1.5 > +++ patches/patch-libdkim_dkim_h 13 Oct 2013 22:48:24 -0000 > @@ -1,7 +1,7 @@ > $OpenBSD: patch-libdkim_dkim_h,v 1.5 2009/01/23 06:43:07 jasper Exp $ > ---- libdkim/dkim.h.orig Tue Jan 13 09:22:18 2009 > -+++ libdkim/dkim.h Thu Jan 22 23:28:54 2009 > -@@ -17,6 +17,10 @@ static char dkim_h_id[] = "@(#)$Id: dkim.h,v 1.197 200 > +--- libdkim/dkim.h.orig Mon Apr 6 18:36:09 2009 > ++++ libdkim/dkim.h Sun Oct 13 18:28:20 2013 > +@@ -17,6 +17,10 @@ static char dkim_h_id[] = "@(#)$Id: dkim.h,v 1.202 200 > /* openssl includes */ > #include <openssl/sha.h> > > -- jca | PGP: 0x06A11494 / 61DB D9A0 00A4 67CF 2A90 8961 6191 8FBF 06A1 1494