diff --git a/autogen.changes b/autogen.changes index 3d740e7..bcaeb90 100644 --- a/autogen.changes +++ b/autogen.changes @@ -1,3 +1,9 @@ +------------------------------------------------------------------- +Mon Mar 25 08:32:40 UTC 2019 - Martin Liška + +- Add gcc9-fix-wrestrict.patch in order to fix + bsc#1125772. + ------------------------------------------------------------------- Thu Nov 22 11:01:48 UTC 2018 - schwab@suse.de diff --git a/autogen.spec b/autogen.spec index f00692e..4d0d74d 100644 --- a/autogen.spec +++ b/autogen.spec @@ -1,7 +1,7 @@ # # spec file for package autogen # -# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -32,6 +32,8 @@ Patch2: autogen-catch-race-error.patch Patch3: installable-programs.patch # PATCH-FIX-UPSTREAM Patch4: sprintf-overflow.patch +# PATCH-FIX-UPSTREAM -- https://sourceforge.net/p/autogen/bugs/193/#5844 +Patch5: gcc9-fix-wrestrict.patch BuildRequires: fdupes BuildRequires: guile-devel BuildRequires: makeinfo @@ -86,6 +88,7 @@ well. %patch2 -p1 %patch3 -p1 %patch4 -p1 +%patch5 -p1 %build %configure \ diff --git a/gcc9-fix-wrestrict.patch b/gcc9-fix-wrestrict.patch new file mode 100644 index 0000000..3211059 --- /dev/null +++ b/gcc9-fix-wrestrict.patch @@ -0,0 +1,50 @@ +diff --git a/compat/pathfind.c b/compat/pathfind.c +index 5c477ca..6a4eeb5 100644 +--- a/compat/pathfind.c ++++ b/compat/pathfind.c +@@ -136,6 +136,18 @@ make_absolute( char const * string, char const * dot_path ) + return result; + } + ++/* ++ * Proccess strcpy for overlapping memory locations. ++ */ ++static char* ++strcpy_overlapping ( char *d, const char *s) ++{ ++ unsigned n = strlen ( s ); ++ memmove ( d, s, n + 1 ); ++ return d; ++} ++ ++ + /* + * Canonicalize PATH, and return a new path. The new path differs from + * PATH in that: +@@ -182,7 +194,7 @@ canonicalize_pathname( char *path ) + if ((start + 1) != i && (start != 0 || i != 2)) + #endif /* apollo */ + { +- strcpy( result + start + 1, result + i ); ++ strcpy_overlapping( result + start + 1, result + i ); + i = start + 1; + } + +@@ -201,7 +213,7 @@ canonicalize_pathname( char *path ) + if (result[i] == '.') { + /* Handle `./'. */ + if (result[i + 1] == '/') { +- strcpy( result + i, result + i + 1 ); ++ strcpy_overlapping( result + i, result + i + 1 ); + i = (start < 0) ? 0 : start; + continue; + } +@@ -211,7 +223,7 @@ canonicalize_pathname( char *path ) + (result[i + 2] == '/' || !result[i + 2])) { + while (--start > -1 && result[start] != '/') + ; +- strcpy( result + start + 1, result + i + 2 ); ++ strcpy_overlapping( result + start + 1, result + i + 2 ); + i = (start < 0) ? 0 : start; + continue; + }