Go to:
Gentoo Home
Documentation
Forums
Lists
Bugs
Planet
Store
Wiki
Get Gentoo!
Gentoo's Bugzilla – Attachment 700449 Details for
Bug 774666
sys-apps/fakechroot-2.20.1 - chroot.c: error: _STAT_VER undeclared (first use in this function)
Home
|
New
–
[Ex]
|
Browse
|
Search
|
Privacy Policy
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Usable but improper patch
statx_master.patch (text/plain), 15.28 KB, created by
Michael Schmid
on 2021-04-17 21:18:50 UTC
(
hide
)
Description:
Usable but improper patch
Filename:
MIME Type:
Creator:
Michael Schmid
Created:
2021-04-17 21:18:50 UTC
Size:
15.28 KB
patch
obsolete
>From b42d1fb9538f680af2f31e864c555414ccba842a Mon Sep 17 00:00:00 2001 >From: Piotr Roszatycki <piotr.roszatycki@gmail.com> >Date: Mon, 10 Feb 2020 13:59:10 -0800 >Subject: [PATCH 1/7] New `statx` function > >--- > configure.ac | 1 + > src/Makefile.am | 1 + > src/statx.c | 44 ++++++++++++++++++++++++++++++++++++++++++++ > 4 files changed, 47 insertions(+) > create mode 100644 src/statx.c > >diff --git a/configure.ac b/configure.ac >index a654edd..f8cdb32 100644 >--- a/configure.ac >+++ b/configure.ac >@@ -277,6 +277,7 @@ AC_CHECK_FUNCS(m4_normalize([ > statfs64 > statvfs > statvfs64 >+ statx > stpcpy > strchrnul > strlcpy >diff --git a/src/Makefile.am b/src/Makefile.am >index d729b0e..6066345 100644 >--- a/src/Makefile.am >+++ b/src/Makefile.am >@@ -152,6 +152,7 @@ libfakechroot_la_SOURCES = \ > statfs64.c \ > statvfs.c \ > statvfs64.c \ >+ statx.c \ > stpcpy.c \ > strchrnul.c \ > strchrnul.h \ >diff --git a/src/statx.c b/src/statx.c >new file mode 100644 >index 0000000..524f73e >--- /dev/null >+++ b/src/statx.c >@@ -0,0 +1,44 @@ >+/* >+ libfakechroot -- fake chroot environment >+ Copyright (c) 2010-2020 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_STATX >+ >+#define _GNU_SOURCE >+#include <sys/types.h> >+#include <sys/stat.h> >+#include <unistd.h> >+ >+#include "libfakechroot.h" >+ >+ >+wrapper(statx, int, (int dirfd, const char * pathname, int flags, unsigned int mask, struct statx * statxbuf)) >+{ >+ char fakechroot_abspath[FAKECHROOT_PATH_MAX]; >+ char fakechroot_buf[FAKECHROOT_PATH_MAX]; >+ debug("statx(%d, \"%s\", %d, %u, &statxbuf)", dirfd, pathname, flags, mask); >+ expand_chroot_path_at(dirfd, pathname); >+ return nextcall(statx)(dirfd, pathname, flags, mask, statxbuf); >+} >+ >+#else >+typedef int empty_translation_unit; >+#endif > >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 2/7] 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 3/7] 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 4/7] 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 7/7] 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
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 774666
:
689772
|
689775
|
689778
|
689781
|
689784
|
689787
|
689790
| 700449