diff options
author | Andrew Clemons <andrew.clemons@gmail.com> | 2022-02-05 17:20:44 +1300 |
---|---|---|
committer | Willy Sudiarto Raharjo <willysr@slackbuilds.org> | 2022-02-06 15:47:05 +0700 |
commit | 57a6aab99c0f2f24b034b0161e41f1c073ff6aef (patch) | |
tree | 66a4ea35a898d97368384564d35611f25dbf7959 /system/fakechroot | |
parent | bebee48ac20db29c07ae8a243b9f209f35968f75 (diff) |
system/fakechroot: Updated for version 2.20.1.
Signed-off-by: Andrew Clemons <andrew.clemons@gmail.com>
Signed-off-by: Willy Sudiarto Raharjo <willysr@slackbuilds.org>
Diffstat (limited to 'system/fakechroot')
-rw-r--r-- | system/fakechroot/fakechroot-2.20.1-glibc-2.33.patch | 469 | ||||
-rw-r--r-- | system/fakechroot/fakechroot.SlackBuild | 14 | ||||
-rw-r--r-- | system/fakechroot/fakechroot.info | 6 |
3 files changed, 481 insertions, 8 deletions
diff --git a/system/fakechroot/fakechroot-2.20.1-glibc-2.33.patch b/system/fakechroot/fakechroot-2.20.1-glibc-2.33.patch new file mode 100644 index 000000000000..31c2dd784393 --- /dev/null +++ b/system/fakechroot/fakechroot-2.20.1-glibc-2.33.patch @@ -0,0 +1,469 @@ +From 534e6d555736b97211523970d378dfb0db2608e9 Mon Sep 17 00:00:00 2001 +From: Ilya Lipnitskiy <ilya.lipnitskiy@gmail.com> +Date: Mon, 22 Feb 2021 21:44:07 -0800 +Subject: [PATCH 1/6] tmpnam.c: fix heap overflow + +Signed-off-by: Ilya Lipnitskiy <ilya.lipnitskiy@gmail.com> +--- + src/tmpnam.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/tmpnam.c b/src/tmpnam.c +index ce60817..917ee6b 100644 +--- a/src/tmpnam.c ++++ b/src/tmpnam.c +@@ -42,7 +42,7 @@ wrapper(tmpnam, char *, (char * s)) + + expand_chroot_path(ptr); + +- ptr2 = malloc(strlen(ptr)); ++ ptr2 = malloc(strlen(ptr) + 1); + if (ptr2 == NULL) return NULL; + + strcpy(ptr2, ptr); + +From 75d7e6fa191c11a791faff06a0de86eaa7801d05 Mon Sep 17 00:00:00 2001 +From: Ilya Lipnitskiy <ilya.lipnitskiy@gmail.com> +Date: Mon, 22 Feb 2021 21:46:36 -0800 +Subject: [PATCH 2/6] declare missing bufs, remove ver from lstat + +Signed-off-by: Ilya Lipnitskiy <ilya.lipnitskiy@gmail.com> +--- + src/lstat.c | 8 +++++--- + src/lstat.h | 2 +- + src/mknod.c | 2 ++ + src/stat.c | 2 ++ + src/stat64.c | 2 ++ + 5 files changed, 12 insertions(+), 4 deletions(-) + +diff --git a/src/lstat.c b/src/lstat.c +index 3f6d819..54e3263 100644 +--- a/src/lstat.c ++++ b/src/lstat.c +@@ -28,9 +28,11 @@ + #include "lstat.h" + + +-wrapper(lstat, int, (int ver, const char * filename, struct stat * buf)) ++wrapper(lstat, int, (const char * filename, struct stat * buf)) + { +- debug("lstat(%d, \"%s\", &buf)", ver, filename); ++ char fakechroot_abspath[FAKECHROOT_PATH_MAX]; ++ char fakechroot_buf[FAKECHROOT_PATH_MAX]; ++ debug("lstat(\"%s\", &buf)", filename); + + if (!fakechroot_localdir(filename)) { + if (filename != NULL) { +@@ -40,7 +42,7 @@ wrapper(lstat, int, (int ver, const char * filename, struct stat * buf)) + } + } + +- return lstat_rel(ver, filename, buf); ++ return lstat_rel(filename, buf); + } + + +diff --git a/src/lstat.h b/src/lstat.h +index 751c1ea..ee48303 100644 +--- a/src/lstat.h ++++ b/src/lstat.h +@@ -26,7 +26,7 @@ + + #ifndef HAVE___LXSTAT + +-wrapper_proto(lstat, int, (int, const char *, struct stat *)); ++wrapper_proto(lstat, int, (const char *, struct stat *)); + + int lstat_rel(const char *, struct stat *); + +diff --git a/src/mknod.c b/src/mknod.c +index 52fd33b..2771037 100644 +--- a/src/mknod.c ++++ b/src/mknod.c +@@ -28,6 +28,8 @@ + + wrapper(mknod, int, (const char * pathname, mode_t mode, dev_t dev)) + { ++ char fakechroot_abspath[FAKECHROOT_PATH_MAX]; ++ char fakechroot_buf[FAKECHROOT_PATH_MAX]; + debug("mknod(\"%s\", 0%o, %ld)", pathname, mode, dev); + expand_chroot_path(pathname); + return nextcall(mknod)(pathname, mode, dev); +diff --git a/src/stat.c b/src/stat.c +index 7845662..7b37793 100644 +--- a/src/stat.c ++++ b/src/stat.c +@@ -33,6 +33,8 @@ + + wrapper(stat, int, (const char * file_name, struct stat * buf)) + { ++ char fakechroot_abspath[FAKECHROOT_PATH_MAX]; ++ char fakechroot_buf[FAKECHROOT_PATH_MAX]; + debug("stat(\"%s\", &buf)", file_name); + expand_chroot_path(file_name); + return nextcall(stat)(file_name, buf); +diff --git a/src/stat64.c b/src/stat64.c +index aac9c75..a360f66 100644 +--- a/src/stat64.c ++++ b/src/stat64.c +@@ -34,6 +34,8 @@ + + wrapper(stat64, int, (const char * file_name, struct stat64 * buf)) + { ++ char fakechroot_abspath[FAKECHROOT_PATH_MAX]; ++ char fakechroot_buf[FAKECHROOT_PATH_MAX]; + debug("stat64(\"%s\", &buf)", file_name); + expand_chroot_path(file_name); + return nextcall(stat64)(file_name, buf); + +From 693a3597ea7fccfb62f357503ff177bd3e3d5a89 Mon Sep 17 00:00:00 2001 +From: Ilya Lipnitskiy <ilya.lipnitskiy@gmail.com> +Date: Mon, 22 Feb 2021 21:47:09 -0800 +Subject: [PATCH 3/6] fix glibc 2.33+ compatibility + +Signed-off-by: Ilya Lipnitskiy <ilya.lipnitskiy@gmail.com> +--- + configure.ac | 20 ++++++++++++++++++++ + src/ftw.c | 2 +- + src/ftw64.c | 14 +++++++++++--- + src/libfakechroot.h | 15 +++++++++++++++ + src/lstat.c | 2 +- + src/lstat.h | 2 +- + src/lstat64.c | 2 +- + src/mknod.c | 2 +- + src/mknodat.c | 2 +- + src/stat.c | 2 +- + src/stat64.c | 2 +- + 11 files changed, 54 insertions(+), 11 deletions(-) + +diff --git a/configure.ac b/configure.ac +index f8cdb32..9cc2e77 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -75,6 +75,26 @@ ACX_CHECK_C_ATTRIBUTE_VISIBILITY + # Checks for libraries. + AC_CHECK_LIB([dl], [dlsym]) + ++AH_TEMPLATE([NEW_GLIBC], [glibc >= 2.33]) ++AC_MSG_CHECKING([for glibc 2.33+]) ++ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ ++ #include <sys/stat.h> ++ ]], [[ ++#ifdef __GLIBC__ ++#if !__GLIBC_PREREQ(2,33) ++#error glibc<2.33 ++#endif ++#else ++#error not glibc ++#endif ++ ]])],[ ++ AC_DEFINE(NEW_GLIBC,1) ++ AC_MSG_RESULT([yes]) ++ ],[ ++ AC_DEFINE(NEW_GLIBC,0) ++ AC_MSG_RESULT([no]) ++ ]) ++ + # Checks for header files. + AC_HEADER_DIRENT + AC_HEADER_STDC +diff --git a/src/ftw.c b/src/ftw.c +index 92fc126..a9abc85 100644 +--- a/src/ftw.c ++++ b/src/ftw.c +@@ -185,7 +185,7 @@ int rpl_lstat (const char *, struct stat *); + # define NFTW_NEW_NAME __new_nftw + # define INO_T ino_t + # define STAT stat +-# ifdef _LIBC ++# if defined(_LIBC) && !NEW_GLIBC + # define LXSTAT __lxstat + # define XSTAT __xstat + # define FXSTATAT __fxstatat +diff --git a/src/ftw64.c b/src/ftw64.c +index 7cc8cdf..cee1f2b 100644 +--- a/src/ftw64.c ++++ b/src/ftw64.c +@@ -18,6 +18,8 @@ + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + ++#include "config.h" ++ + #define __FTW64_C + #define FTW_NAME ftw64 + #define NFTW_NAME nftw64 +@@ -25,9 +27,15 @@ + #define NFTW_NEW_NAME __new_nftw64 + #define INO_T ino64_t + #define STAT stat64 +-#define LXSTAT __lxstat64 +-#define XSTAT __xstat64 +-#define FXSTATAT __fxstatat64 ++#if NEW_GLIBC ++# define LXSTAT(V,f,sb) lstat64 (f,sb) ++# define XSTAT(V,f,sb) stat64 (f,sb) ++# define FXSTATAT(V,d,f,sb,m) fstatat64 (d, f, sb, m) ++#else ++# define LXSTAT __lxstat64 ++# define XSTAT __xstat64 ++# define FXSTATAT __fxstatat64 ++#endif + #define FTW_FUNC_T __ftw64_func_t + #define NFTW_FUNC_T __nftw64_func_t + +diff --git a/src/libfakechroot.h b/src/libfakechroot.h +index 4cf199f..64ff15f 100644 +--- a/src/libfakechroot.h ++++ b/src/libfakechroot.h +@@ -200,6 +200,21 @@ + # endif + #endif + ++#ifndef _STAT_VER ++ #if defined (__aarch64__) ++ #define _STAT_VER 0 ++ #elif defined (__powerpc__) && __WORDSIZE == 64 ++ #define _STAT_VER 1 ++ #elif defined (__riscv) && __riscv_xlen==64 ++ #define _STAT_VER 0 ++ #elif defined (__s390x__) ++ #define _STAT_VER 1 ++ #elif defined (__x86_64__) ++ #define _STAT_VER 1 ++ #else ++ #define _STAT_VER 3 ++ #endif ++#endif + + typedef void (*fakechroot_wrapperfn_t)(void); + +diff --git a/src/lstat.c b/src/lstat.c +index 54e3263..fa38323 100644 +--- a/src/lstat.c ++++ b/src/lstat.c +@@ -20,7 +20,7 @@ + + #include <config.h> + +-#ifndef HAVE___LXSTAT ++#if !defined(HAVE___LXSTAT) || NEW_GLIBC + + #include <sys/stat.h> + #include <unistd.h> +diff --git a/src/lstat.h b/src/lstat.h +index ee48303..c46a2b9 100644 +--- a/src/lstat.h ++++ b/src/lstat.h +@@ -24,7 +24,7 @@ + #include <config.h> + #include "libfakechroot.h" + +-#ifndef HAVE___LXSTAT ++#if !defined(HAVE___LXSTAT) || NEW_GLIBC + + wrapper_proto(lstat, int, (const char *, struct stat *)); + +diff --git a/src/lstat64.c b/src/lstat64.c +index b6212fc..a332d7c 100644 +--- a/src/lstat64.c ++++ b/src/lstat64.c +@@ -20,7 +20,7 @@ + + #include <config.h> + +-#if defined(HAVE_LSTAT64) && !defined(HAVE___LXSTAT64) ++#if defined(HAVE_LSTAT64) && (!defined(HAVE___LXSTAT64) || NEW_GLIBC) + + #define _LARGEFILE64_SOURCE + #define _BSD_SOURCE +diff --git a/src/mknod.c b/src/mknod.c +index 2771037..aeb750b 100644 +--- a/src/mknod.c ++++ b/src/mknod.c +@@ -20,7 +20,7 @@ + + #include <config.h> + +-#ifndef HAVE___XMKNOD ++#if !defined(HAVE___XMKNOD) || NEW_GLIBC + + #include <sys/stat.h> + #include "libfakechroot.h" +diff --git a/src/mknodat.c b/src/mknodat.c +index 732a22b..3239b35 100644 +--- a/src/mknodat.c ++++ b/src/mknodat.c +@@ -20,7 +20,7 @@ + + #include <config.h> + +-#if defined(HAVE_MKNODAT) && !defined(HAVE___XMKNODAT) ++#if defined(HAVE_MKNODAT) && (!defined(HAVE___XMKNODAT) || NEW_GLIBC) + + #define _ATFILE_SOURCE + #include <sys/stat.h> +diff --git a/src/stat.c b/src/stat.c +index 7b37793..5ef57ba 100644 +--- a/src/stat.c ++++ b/src/stat.c +@@ -20,7 +20,7 @@ + + #include <config.h> + +-#ifndef HAVE___XSTAT ++#if !defined(HAVE___XSTAT) || NEW_GLIBC + + #define _BSD_SOURCE + #define _DEFAULT_SOURCE +diff --git a/src/stat64.c b/src/stat64.c +index a360f66..993ce80 100644 +--- a/src/stat64.c ++++ b/src/stat64.c +@@ -20,7 +20,7 @@ + + #include <config.h> + +-#if defined(HAVE_STAT64) && !defined(HAVE___XSTAT64) ++#if defined(HAVE_STAT64) && (!defined(HAVE___XSTAT64) || NEW_GLIBC) + + #define _BSD_SOURCE + #define _LARGEFILE64_SOURCE + +From e7c1f3a446e594a4d0cce5f5d499c9439ce1d5c5 Mon Sep 17 00:00:00 2001 +From: neok-m4700 <neok-m4700@users.noreply.github.com> +Date: Wed, 24 Feb 2021 17:36:57 +0100 +Subject: [PATCH 6/6] wrap fstatat and fstatat64 + +--- + configure.ac | 2 ++ + src/Makefile.am | 2 ++ + src/fstatat.c | 42 ++++++++++++++++++++++++++++++++++++++++++ + src/fstatat64.c | 43 +++++++++++++++++++++++++++++++++++++++++++ + 4 files changed, 89 insertions(+) + create mode 100644 src/fstatat.c + create mode 100644 src/fstatat64.c + +diff --git a/configure.ac b/configure.ac +index 9cc2e77..5b3053e 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -218,6 +218,8 @@ AC_CHECK_FUNCS(m4_normalize([ + freopen64 + fstat + fstat64 ++ fstatat ++ fstatat64 + fts_children + fts_open + fts_read +diff --git a/src/Makefile.am b/src/Makefile.am +index 6066345..eb311c0 100644 +--- a/src/Makefile.am ++++ b/src/Makefile.am +@@ -61,6 +61,8 @@ libfakechroot_la_SOURCES = \ + fopen64.c \ + freopen.c \ + freopen64.c \ ++ fstatat.c \ ++ fstatat64.c \ + fts.c \ + fts64.c \ + ftw.c \ +diff --git a/src/fstatat.c b/src/fstatat.c +new file mode 100644 +index 0000000..ca7578b +--- /dev/null ++++ b/src/fstatat.c +@@ -0,0 +1,42 @@ ++/* ++ libfakechroot -- fake chroot environment ++ Copyright (c) 2010, 2021 Piotr Roszatycki <dexter@debian.org> ++ ++ This library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ This library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with this library; if not, write to the Free Software ++ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ++*/ ++ ++ ++#include <config.h> ++ ++#ifdef HAVE_FSTATAT ++ ++#define _ATFILE_SOURCE ++#define _POSIX_C_SOURCE 200809L ++#include <sys/stat.h> ++#include <limits.h> ++#include "libfakechroot.h" ++ ++wrapper(fstatat, int, (int dirfd, const char *pathname, struct stat *buf, int flags)) ++{ ++ char fakechroot_abspath[FAKECHROOT_PATH_MAX]; ++ char fakechroot_buf[FAKECHROOT_PATH_MAX]; ++ debug("fstatat(%d, \"%s\", &buf, %d)", dirfd, pathname, flags); ++ expand_chroot_path_at(dirfd, pathname); ++ return nextcall(fstatat)(dirfd, pathname, buf, flags); ++} ++ ++#else ++typedef int empty_translation_unit; ++#endif +diff --git a/src/fstatat64.c b/src/fstatat64.c +new file mode 100644 +index 0000000..1863372 +--- /dev/null ++++ b/src/fstatat64.c +@@ -0,0 +1,43 @@ ++/* ++ libfakechroot -- fake chroot environment ++ Copyright (c) 2010, 2021 Piotr Roszatycki <dexter@debian.org> ++ ++ This library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ This library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with this library; if not, write to the Free Software ++ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ++*/ ++ ++ ++#include <config.h> ++ ++#ifdef HAVE_FSTATAT64 ++ ++#define _ATFILE_SOURCE ++#define _POSIX_C_SOURCE 200809L ++#define _LARGEFILE64_SOURCE ++#include <sys/stat.h> ++#include <limits.h> ++#include "libfakechroot.h" ++ ++wrapper(fstatat64, int, (int dirfd, const char *pathname, struct stat64 *buf, int flags)) ++{ ++ char fakechroot_abspath[FAKECHROOT_PATH_MAX]; ++ char fakechroot_buf[FAKECHROOT_PATH_MAX]; ++ debug("fstatat64(%d, \"%s\", &buf, %d)", dirfd, pathname, flags); ++ expand_chroot_path_at(dirfd, pathname); ++ return nextcall(fstatat64)(dirfd, pathname, buf, flags); ++} ++ ++#else ++typedef int empty_translation_unit; ++#endif diff --git a/system/fakechroot/fakechroot.SlackBuild b/system/fakechroot/fakechroot.SlackBuild index 66dbc3cf7691..ae5854880afa 100644 --- a/system/fakechroot/fakechroot.SlackBuild +++ b/system/fakechroot/fakechroot.SlackBuild @@ -25,7 +25,7 @@ cd $(dirname $0) ; CWD=$(pwd) PRGNAM=fakechroot -VERSION=${VERSION:-2.19} +VERSION=${VERSION:-2.20.1} BUILD=${BUILD:-1} TAG=${TAG:-_SBo} PKGTYPE=${PKGTYPE:-tgz} @@ -72,12 +72,14 @@ cd $TMP rm -rf $PRGNAM-$VERSION tar xvf $CWD/$PRGNAM-$VERSION.tar.gz cd $PRGNAM-$VERSION +# thanks gentoo maintainers +patch -p1 < $CWD/fakechroot-2.20.1-glibc-2.33.patch chown -R root:root . find -L . \ - \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \ - -o -perm 511 \) -exec chmod 755 {} \; -o \ - \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \ - -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \; + \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \ + -o -perm 511 \) -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \ + -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \; CFLAGS="$SLKCFLAGS" \ CXXFLAGS="$SLKCFLAGS" \ @@ -93,6 +95,8 @@ CXXFLAGS="$SLKCFLAGS" \ make make install DESTDIR=$PKG +rm -f $PKG/{,usr/}lib${LIBDIRSUFFIX}/*.la + find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true diff --git a/system/fakechroot/fakechroot.info b/system/fakechroot/fakechroot.info index cf7dd99f99ca..7c17827e23f6 100644 --- a/system/fakechroot/fakechroot.info +++ b/system/fakechroot/fakechroot.info @@ -1,8 +1,8 @@ PRGNAM="fakechroot" -VERSION="2.19" +VERSION="2.20.1" HOMEPAGE="https://github.com/dex4er/fakechroot" -DOWNLOAD="https://github.com/dex4er/fakechroot/archive/2.19/fakechroot-2.19.tar.gz" -MD5SUM="db6378420c769232e69508bb78612c34" +DOWNLOAD="https://github.com/dex4er/fakechroot/archive/2.20.1/fakechroot-2.20.1.tar.gz" +MD5SUM="69612efa06636e79a56898512222b0fc" DOWNLOAD_x86_64="" MD5SUM_x86_64="" REQUIRES="" |