From 0840026a4b41600ad74717bf7b26ab4185ed7121 Mon Sep 17 00:00:00 2001 From: "Dmitrij D. Czarkoff" Date: Fri, 3 Apr 2015 22:38:46 +0200 Subject: [PATCH] fix crash in maildir_set_msg_flags() memcpy(3)'s behavior is undefined when source and destination addresses overlap, and it actually crashed on OpenBSD. use memmove() instead. --- src/drv_maildir.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/drv_maildir.c b/src/drv_maildir.c index 045dd9c..98e1687 100644 --- a/src/drv_maildir.c +++ b/src/drv_maildir.c @@ -1464,7 +1464,7 @@ maildir_set_msg_flags( store_t *gctx, message_t *gmsg, int uid ATTR_UNUSED, int for (i = 0; i < as(Flags); i++) { if ((p = strchr( s, Flags[i] ))) { if (del & (1 << i)) { - memcpy( p, p + 1, fl - (p - s) ); + memmove( p, p + 1, fl - (p - s) ); fl--; } } else if (add & (1 << i)) {