summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeremy Harris <jgh146exb@wizmail.org>2018-10-20 21:03:30 +0100
committerJeremy Harris <jgh146exb@wizmail.org>2018-10-21 15:32:49 +0100
commite30f4f43de211b14bd405a3d0e1579b9bd814908 (patch)
tree99740f81fb55de5d9ee0f2626bb48b5fb398d4e7
parent0768462dc5830cde5ae7a3659577fb557926db28 (diff)
Fix bad use of library, copying string over itself
-rw-r--r--doc/doc-txt/ChangeLog4
-rw-r--r--src/src/deliver.c3
2 files changed, 6 insertions, 1 deletions
diff --git a/doc/doc-txt/ChangeLog b/doc/doc-txt/ChangeLog
index 414dd9810..70a496259 100644
--- a/doc/doc-txt/ChangeLog
+++ b/doc/doc-txt/ChangeLog
@@ -142,6 +142,10 @@ JH/30 Bug 2329: Increase buffer size used for dns lookup from 2k, which was
the way to the max DNS message size of 64kB, even though this might be
overmuch for IOT constrained device use.
+JH/31 Fix a bad use of a copy function, which could be used to pointlessly
+ copy a string over itself. The library routine is documented as not
+ supporting overlapping copies, and on MacOS it actually raised a SIGABRT.
+
Exim version 4.91
-----------------
diff --git a/src/src/deliver.c b/src/src/deliver.c
index 6c6e6f7d1..4624719f8 100644
--- a/src/src/deliver.c
+++ b/src/src/deliver.c
@@ -5586,7 +5586,8 @@ message size. This use of strcpy() is OK because the length id is checked when
it is obtained from a command line (the -M or -q options), and otherwise it is
known to be a valid message id. */
-Ustrcpy(message_id, id);
+if (id != message_id)
+ Ustrcpy(message_id, id);
f.deliver_force = forced;
return_count = 0;
message_size = 0;