From 9e61ba19e9cda344aa2094e9a671d98076164163 Mon Sep 17 00:00:00 2001 From: mlugg Date: Mon, 12 Jun 2023 22:00:56 +0100 Subject: [PATCH] std.crypto.tls.Client: fix @memcpy crash in limitedOverlapCopy Resolves: #15928 --- lib/std/crypto/tls/Client.zig | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/lib/std/crypto/tls/Client.zig b/lib/std/crypto/tls/Client.zig index 2745bd4e6f..5b9b00538a 100644 --- a/lib/std/crypto/tls/Client.zig +++ b/lib/std/crypto/tls/Client.zig @@ -1256,10 +1256,8 @@ fn limitedOverlapCopy(frag: []u8, in: usize) void { // A single, non-overlapping memcpy suffices. @memcpy(frag[0..first.len], first); } else { - // Need two memcpy calls because one alone would overlap. - @memcpy(frag[0..in], first[0..in]); - const leftover = first.len - in; - @memcpy(frag[in..][0..leftover], first[in..][0..leftover]); + // One memcpy call would overlap, so just do this instead. + std.mem.copyForwards(u8, frag, first); } }