From e30f4f43de211b14bd405a3d0e1579b9bd814908 Mon Sep 17 00:00:00 2001 From: Jeremy Harris Date: Sat, 20 Oct 2018 21:03:30 +0100 Subject: [PATCH] Fix bad use of library, copying string over itself --- doc/doc-txt/ChangeLog | 4 ++++ src/src/deliver.c | 3 ++- 2 files changed, 6 insertions(+), 1 deletion(-) 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; -- 2.25.1