From 86cd065aa75af9dc019302f4b3ac7e0e20e0e67b Mon Sep 17 00:00:00 2001 From: Jonas 'Sortie' Termansen Date: Wed, 24 Sep 2014 21:12:53 +0200 Subject: [PATCH] Fix wmemmove(3) off-by-one bounds error. --- libc/wchar/wmemmove.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/libc/wchar/wmemmove.cpp b/libc/wchar/wmemmove.cpp index 1331f71f..e8c01c31 100644 --- a/libc/wchar/wmemmove.cpp +++ b/libc/wchar/wmemmove.cpp @@ -1,6 +1,6 @@ /******************************************************************************* - Copyright(C) Jonas 'Sortie' Termansen 2013. + Copyright(C) Jonas 'Sortie' Termansen 2013, 2014. This file is part of the Sortix C Library. @@ -28,10 +28,14 @@ extern "C" wchar_t* wmemmove(wchar_t* dst, const wchar_t* src, size_t n) { if ( (uintptr_t) dst < (uintptr_t) src ) + { for ( size_t i = 0; i < n; i++ ) dst[i] = src[i]; + } else + { for ( size_t i = 0; i < n; i++ ) - dst[n-i] = src[n-i]; + dst[n-(i+1)] = src[n-(i+1)]; + } return dst; }