summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorAmish2020-01-12 21:17:55 +0530
committerAmish2020-01-12 21:17:55 +0530
commit9a22feff4b705c847e69177be00f7873a0841ca3 (patch)
treeff3c15b644386afd05b1d6f9543dc542880a6eca
parent0137248e85f7f0b3f24634bab24ce880855a3dbe (diff)
downloadaur-9a22feff4b705c847e69177be00f7873a0841ca3.tar.gz
Fix issues discovered by Coverity scan from rhbz#1602689
-rw-r--r--.SRCINFO14
-rw-r--r--PKGBUILD5
-rw-r--r--sendmail-8.16.0.29-fix-covscan-issues.patch149
3 files changed, 163 insertions, 5 deletions
diff --git a/.SRCINFO b/.SRCINFO
index 84a50236172c..9aac78e4897d 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,13 +1,15 @@
pkgbase = sendmail
pkgdesc = A general purpose internetwork email routing MTA
pkgver = 8.15.2
- pkgrel = 8
+ pkgrel = 9
url = http://www.sendmail.org
arch = x86_64
license = custom:sendmail
depends = db
depends = cyrus-sasl
provides = sendmail=8.15
+ provides = smtp-server
+ provides = smtp-forwarder
conflicts = msmtp-mta
conflicts = postfix
conflicts = exim
@@ -22,6 +24,8 @@ pkgbase = sendmail
source = sendmail-8.15.2-smtp-session-reuse-fix.patch
source = sendmail-8.15.2-openssl-1.1.0-fix.patch
source = sendmail-8.15.2-openssl-1.1.0-ecdhe-fix.patch
+ source = sendmail-8.15.2-gethostbyname2.patch
+ source = sendmail-8.16.0.29-fix-covscan-issues.patch
source = sendmail.conf
source = sasl2.conf
source = sendmail.sysusers
@@ -29,17 +33,19 @@ pkgbase = sendmail
source = sendmail.service
source = sm-client.service
sha256sums = 24f94b5fd76705f15897a78932a5f2439a32b1a2fdc35769bb1a5f5d9b4db439
- sha256sums = 01c281630074be308139295836d38faee3d49656b8271df1d3f42e8506b3d751
+ sha256sums = 01dc50a378f134e9e3a91f98a5a002a8fa6a0c69b32ceddf6fc29b40e0fb8be9
sha256sums = 03169f8983d200adf2422677bd4adce3b5887f33724778f16d7f58506eac0e05
sha256sums = bc5a0de6c5434d8d46467f93d07b2bb5c7acd62f9dbce2490e0005d21b673250
sha256sums = 9991dd85428778cec0c2030bf49e6ddf6d3db6026c651f858d72891973537b0e
sha256sums = 746d8ae8dea54cb2599c02181c2ea28ab15b26ba5e1e3b0f9cfe907a0e7a1d22
+ sha256sums = 656c76d42281afbb43fa628e03c4d725e94e6f34a16802427d3314e504086033
+ sha256sums = e3b81aa029249ebaeec96120849a38e98fe952c005ecc02761d478f1aa167131
sha256sums = 39730f2be66bb1f1e6bc7fff61911db632ecf4b891d348df525abe2020274580
sha256sums = 9b4d2d141191f6c9a18538f7acf65243cceb26359f88b64c92c1c4e8407398f0
sha256sums = 95531a87d42e30742ca71f7d7197403eb9d703a407a50c9fda1f909ed21e1010
sha256sums = 3469c3c503ef24ccaedeb69b35787ef3745852cf9dc78540f5ec4195d2b817d7
- sha256sums = c53eebc1b5e362bd395cbb1c52354efdc956b9607d06656da2c5a2500554ebc7
- sha256sums = ecbd0a27e868d73d87fcfec292c19ea9479d0a8e9783788596d9add5e012218f
+ sha256sums = d18c2c716eb94cb22082a7e4693e635222d2b5c7daa2ecc80025179cfd438b3d
+ sha256sums = c934a46aabe61526687f46d34aa0406d886d982aa10a57980a59464e24538d95
pkgname = sendmail
diff --git a/PKGBUILD b/PKGBUILD
index 50335ba4cbf9..393e78f6e130 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -7,7 +7,7 @@
pkgname=sendmail
pkgver=8.15.2
-pkgrel=8
+pkgrel=9
pkgdesc="A general purpose internetwork email routing MTA"
url="http://www.sendmail.org"
arch=('x86_64')
@@ -25,6 +25,7 @@ source=("https://ftp.sendmail.org/${pkgname}.${pkgver}.tar.gz"
'sendmail-8.15.2-openssl-1.1.0-fix.patch'
'sendmail-8.15.2-openssl-1.1.0-ecdhe-fix.patch'
'sendmail-8.15.2-gethostbyname2.patch'
+ 'sendmail-8.16.0.29-fix-covscan-issues.patch'
'sendmail.conf'
'sasl2.conf'
'sendmail.sysusers'
@@ -39,6 +40,7 @@ sha256sums=('24f94b5fd76705f15897a78932a5f2439a32b1a2fdc35769bb1a5f5d9b4db439'
'9991dd85428778cec0c2030bf49e6ddf6d3db6026c651f858d72891973537b0e'
'746d8ae8dea54cb2599c02181c2ea28ab15b26ba5e1e3b0f9cfe907a0e7a1d22'
'656c76d42281afbb43fa628e03c4d725e94e6f34a16802427d3314e504086033'
+ 'e3b81aa029249ebaeec96120849a38e98fe952c005ecc02761d478f1aa167131'
'39730f2be66bb1f1e6bc7fff61911db632ecf4b891d348df525abe2020274580'
'9b4d2d141191f6c9a18538f7acf65243cceb26359f88b64c92c1c4e8407398f0'
'95531a87d42e30742ca71f7d7197403eb9d703a407a50c9fda1f909ed21e1010'
@@ -54,6 +56,7 @@ prepare() {
patch -p1 < "${srcdir}"/sendmail-8.15.2-openssl-1.1.0-fix.patch
patch -p1 < "${srcdir}"/sendmail-8.15.2-openssl-1.1.0-ecdhe-fix.patch
patch -p1 < "${srcdir}"/sendmail-8.15.2-gethostbyname2.patch
+ patch -p1 < "${srcdir}"/sendmail-8.16.0.29-fix-covscan-issues.patch
sed -i -e 's/CFGRP=bin/CFGRP=root/g' cf/cf/Makefile
install -m644 -t devtools/Site "${srcdir}"/site.config.m4
}
diff --git a/sendmail-8.16.0.29-fix-covscan-issues.patch b/sendmail-8.16.0.29-fix-covscan-issues.patch
new file mode 100644
index 000000000000..ee24c9151124
--- /dev/null
+++ b/sendmail-8.16.0.29-fix-covscan-issues.patch
@@ -0,0 +1,149 @@
+diff --git a/include/sm/varargs.h b/include/sm/varargs.h
+index 612858d..2609630 100644
+--- a/include/sm/varargs.h
++++ b/include/sm/varargs.h
+@@ -32,6 +32,11 @@
+ # define SM_VA_COPY(dst, src) __va_copy((dst), (src))
+ # else
+ # define SM_VA_COPY(dst, src) memcpy(&(dst), &(src), sizeof((dst)))
++# define SM_VA_END_COPY(ap) do { } while (0)
++# endif
++
++# ifndef SM_VA_END_COPY
++# define SM_VA_END_COPY(ap) va_end(ap)
+ # endif
+
+ /*
+diff --git a/libsm/vfprintf.c b/libsm/vfprintf.c
+index 87c353c..c99d4e5 100644
+--- a/libsm/vfprintf.c
++++ b/libsm/vfprintf.c
+@@ -782,6 +782,7 @@ number: if ((dprec = prec) >= 0)
+ done:
+ FLUSH();
+ error:
++ SM_VA_END_COPY(orgap);
+ if ((argtable != NULL) && (argtable != statargtable))
+ sm_free(argtable);
+ return sm_error(fp) ? SM_IO_EOF : ret;
+diff --git a/sendmail/milter.c b/sendmail/milter.c
+index 462efd2..af6dc66 100644
+--- a/sendmail/milter.c
++++ b/sendmail/milter.c
+@@ -2441,8 +2441,7 @@ milter_negotiate(m, e, milters)
+ sm_syslog(LOG_ERR, e->e_id,
+ "Milter (%s): negotiate: returned %c instead of %c",
+ m->mf_name, rcmd, SMFIC_OPTNEG);
+- if (response != NULL)
+- sm_free(response); /* XXX */
++ SM_FREE(response);
+ milter_error(m, e);
+ return -1;
+ }
+@@ -2457,8 +2456,7 @@ milter_negotiate(m, e, milters)
+ sm_syslog(LOG_ERR, e->e_id,
+ "Milter (%s): negotiate: did not return valid info",
+ m->mf_name);
+- if (response != NULL)
+- sm_free(response); /* XXX */
++ SM_FREE(response);
+ milter_error(m, e);
+ return -1;
+ }
+@@ -2476,8 +2474,7 @@ milter_negotiate(m, e, milters)
+ sm_syslog(LOG_ERR, e->e_id,
+ "Milter (%s): negotiate: did not return enough info",
+ m->mf_name);
+- if (response != NULL)
+- sm_free(response); /* XXX */
++ SM_FREE(response);
+ milter_error(m, e);
+ return -1;
+ }
+@@ -2593,11 +2590,11 @@ milter_negotiate(m, e, milters)
+ if (tTd(64, 5))
+ sm_dprintf("milter_negotiate(%s): received: version %u, fflags 0x%x, pflags 0x%x\n",
+ m->mf_name, m->mf_fvers, m->mf_fflags, m->mf_pflags);
++ SM_FREE(response);
+ return 0;
+
+ error:
+- if (response != NULL)
+- sm_free(response); /* XXX */
++ SM_FREE(response);
+ return -1;
+ }
+
+@@ -3233,6 +3230,7 @@ milter_changeheader(m, response, rlen, e)
+ addheader(newstr(field), mh_value, H_USER, e,
+ !bitset(SMFIP_HDR_LEADSPC, m->mf_pflags));
+ }
++ SM_FREE(mh_value);
+ return;
+ }
+
+@@ -3441,6 +3439,8 @@ milter_chgfrom(response, rlen, e)
+ {
+ if (tTd(64, 10))
+ sm_dprintf("didn't follow protocol argc=%d\n", argc);
++ if (argv != NULL)
++ free(argv);
+ return;
+ }
+
+@@ -3459,6 +3459,7 @@ milter_chgfrom(response, rlen, e)
+ mail_esmtp_args);
+ }
+ Errors = olderrors;
++ free(argv);
+ return;
+ }
+
+@@ -3506,6 +3507,8 @@ milter_addrcpt_par(response, rlen, e)
+ {
+ if (tTd(64, 10))
+ sm_dprintf("didn't follow protocol argc=%d\n", argc);
++ if (argv != NULL)
++ free(argv);
+ return;
+ }
+ olderrors = Errors;
+@@ -3530,6 +3533,7 @@ milter_addrcpt_par(response, rlen, e)
+ }
+
+ Errors = olderrors;
++ free(argv);
+ return;
+ }
+
+diff --git a/sendmail/queue.c b/sendmail/queue.c
+index 503f296..c9153c8 100644
+--- a/sendmail/queue.c
++++ b/sendmail/queue.c
+@@ -8433,6 +8433,7 @@ split_by_recipient(e)
+ if (split_within_queue(ee) == SM_SPLIT_FAIL)
+ {
+ e->e_sibling = firstsibling;
++ SM_FREE(lsplits);
+ return false;
+ }
+ ee->e_flags |= EF_SPLIT;
+@@ -8447,8 +8448,7 @@ split_by_recipient(e)
+ if (p == NULL)
+ {
+ /* let's try to get this done */
+- sm_free(lsplits);
+- lsplits = NULL;
++ SM_FREE(lsplits);
+ }
+ else
+ lsplits = p;
+@@ -8470,7 +8470,7 @@ split_by_recipient(e)
+ {
+ sm_syslog(LOG_NOTICE, e->e_id, "split: count=%d, id%s=%s",
+ n - 1, n > 2 ? "s" : "", lsplits);
+- sm_free(lsplits);
++ SM_FREE(lsplits);
+ }
+ split = split_within_queue(e) != SM_SPLIT_FAIL;
+ if (split)