diff --git a/slang-getkey-memmove.patch b/slang-getkey-memmove.patch new file mode 100644 index 0000000..5466f9c --- /dev/null +++ b/slang-getkey-memmove.patch @@ -0,0 +1,31 @@ +commit d338fd6e949ef62e7eac4eb5c024059e02158b06 +Author: Miroslav Lichvar +Date: Wed Jul 25 13:07:42 2018 +0200 + + Replaced memcpy in SLang_getkey + + memcpy() is not defined for overlapping buffers, i.e. it may copy bytes + in any direction. As SLMEMMOVE is not defined in slang, replace the + SLMEMCPY call with a for loop. + +diff --git a/src/slgetkey.c b/src/slgetkey.c +index 86e7946..d9bc678 100644 +--- a/src/slgetkey.c ++++ b/src/slgetkey.c +@@ -40,13 +40,13 @@ unsigned int SLang_getkey (void) + + if (SLang_Input_Buffer_Len) + { +- unsigned int imax; ++ unsigned int i, imax; + ch = (unsigned int) *SLang_Input_Buffer; + SLang_Input_Buffer_Len--; + imax = SLang_Input_Buffer_Len; + +- SLMEMCPY ((char *) SLang_Input_Buffer, +- (char *) (SLang_Input_Buffer + 1), imax); ++ for (i = 0; i < imax; i++) ++ SLang_Input_Buffer[i] = SLang_Input_Buffer[i + 1]; + } + else if (SLANG_GETKEY_ERROR == (ch = _pSLsys_getkey ())) return ch; + diff --git a/slang.spec b/slang.spec index e30034c..ea5a307 100644 --- a/slang.spec +++ b/slang.spec @@ -11,6 +11,8 @@ Release: 3%{?dist} License: GPLv2+ URL: https://www.jedsoft.org/slang/ Source: https://www.jedsoft.org/releases/%{name}/%{name}-%{version}.tar.bz2 +# don't use memcpy() on overlapping buffers +Patch1: slang-getkey-memmove.patch # disable test that fails with SIGHUP ignored (e.g. in koji) Patch2: slang-sighuptest.patch BuildRequires: gcc libpng-devel pcre-devel zlib-devel @@ -52,6 +54,7 @@ based on the S-Lang extension language. %prep %setup -q +%patch1 -p1 -b .getkey-memmove %patch2 -p1 -b .sighuptest # fix permissions of installed modules