mirror of
git://git.yoctoproject.org/poky.git
synced 2025-07-05 05:04:44 +02:00
glibc: Add ppoll fortify symbol for 64 bit time_t
Patch so ppoll is properly redirected to it's 64bit time variant even when source fortification is active. (From OE-Core rev: 8cb7008090e98d990e7249b4ef723f65825915ae) Signed-off-by: Ola x Nilsson <olani@axis.com> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
parent
30cc89fd1b
commit
1aae880d7d
|
@ -0,0 +1,528 @@
|
|||
From 69318192d16adc7d57adcd69fbbb1e3e107b2783 Mon Sep 17 00:00:00 2001
|
||||
From: Adhemerval Zanella <adhemerval.zanella@linaro.org>
|
||||
Date: Fri, 4 Nov 2022 16:02:52 -0300
|
||||
Subject: [PATCH] Linux: Add ppoll fortify symbol for 64 bit time_t (BZ# 29746)
|
||||
|
||||
Similar to ppoll, the poll.h header needs to redirect the poll call
|
||||
to a proper fortified ppoll with 64 bit time_t support.
|
||||
|
||||
The implementation is straightforward, just need to add a similar
|
||||
check as __poll_chk and call the 64 bit time_t ppoll version. The
|
||||
debug fortify tests are also extended to cover 64 bit time_t for
|
||||
affected ABIs.
|
||||
|
||||
Unfortunately it requires an aditional symbol, which makes backport
|
||||
tricky. One possibility is to add a static inline version if compiler
|
||||
supports is and call abort instead of __chk_fail, so fortified version
|
||||
will call __poll64 in the end.
|
||||
|
||||
Another possibility is to just remove the fortify support for
|
||||
_TIME_BITS=64.
|
||||
|
||||
Checked on i686-linux-gnu.
|
||||
|
||||
Upstream-Status: Backport
|
||||
|
||||
Signed-off-by: Ola Nilsson <olani@axis.com>
|
||||
---
|
||||
debug/Makefile | 41 ++++++++++++------
|
||||
include/sys/poll.h | 5 ++-
|
||||
io/bits/poll2.h | 25 +++++++++++
|
||||
sysdeps/unix/sysv/linux/Versions | 5 +++
|
||||
sysdeps/unix/sysv/linux/arm/be/libc.abilist | 1 +
|
||||
sysdeps/unix/sysv/linux/arm/le/libc.abilist | 1 +
|
||||
sysdeps/unix/sysv/linux/csky/libc.abilist | 1 +
|
||||
sysdeps/unix/sysv/linux/hppa/libc.abilist | 1 +
|
||||
sysdeps/unix/sysv/linux/i386/libc.abilist | 1 +
|
||||
.../sysv/linux/m68k/coldfire/libc.abilist | 1 +
|
||||
.../unix/sysv/linux/m68k/m680x0/libc.abilist | 1 +
|
||||
.../sysv/linux/microblaze/be/libc.abilist | 1 +
|
||||
.../sysv/linux/microblaze/le/libc.abilist | 1 +
|
||||
.../sysv/linux/mips/mips32/fpu/libc.abilist | 1 +
|
||||
.../sysv/linux/mips/mips32/nofpu/libc.abilist | 1 +
|
||||
.../sysv/linux/mips/mips64/n32/libc.abilist | 1 +
|
||||
sysdeps/unix/sysv/linux/nios2/libc.abilist | 1 +
|
||||
.../linux/powerpc/powerpc32/fpu/libc.abilist | 1 +
|
||||
.../powerpc/powerpc32/nofpu/libc.abilist | 1 +
|
||||
sysdeps/unix/sysv/linux/ppoll.c | 3 +-
|
||||
sysdeps/unix/sysv/linux/ppoll_chk.c | 42 +++++++++++++++++++
|
||||
.../unix/sysv/linux/s390/s390-32/libc.abilist | 1 +
|
||||
sysdeps/unix/sysv/linux/sh/be/libc.abilist | 1 +
|
||||
sysdeps/unix/sysv/linux/sh/le/libc.abilist | 1 +
|
||||
.../sysv/linux/sparc/sparc32/libc.abilist | 1 +
|
||||
25 files changed, 125 insertions(+), 15 deletions(-)
|
||||
create mode 100644 sysdeps/unix/sysv/linux/ppoll_chk.c
|
||||
|
||||
diff --git a/debug/Makefile b/debug/Makefile
|
||||
index 456b349c4d..075a135a2b 100644
|
||||
--- a/debug/Makefile
|
||||
+++ b/debug/Makefile
|
||||
@@ -120,8 +120,10 @@ CPPFLAGS-tst-read-chk-cancel.c += -D_FORTIFY_SOURCE=2
|
||||
# CFLAGS for the file.
|
||||
|
||||
tests-all-chk = tst-fortify
|
||||
-tests-c-chk =
|
||||
-tests-cc-chk =
|
||||
+tests-c-def-chk =
|
||||
+tests-cc-def-chk =
|
||||
+tests-c-time64-chk =
|
||||
+tests-cc-time64-chk =
|
||||
|
||||
CFLAGS-tst-fortify.c += -Wno-format -Wno-deprecated-declarations -Wno-error
|
||||
|
||||
@@ -130,11 +132,11 @@ define cflags-default
|
||||
endef
|
||||
|
||||
define cflags-lfs
|
||||
-CFLAGS-tst-fortify-$(1)-lfs-$(2).$(1) += -D_FILE_OFFSET_BITS=64
|
||||
+CFLAGS-tst-fortify-$(1)-lfs-$(2)-$(3).$(1) += -D_FILE_OFFSET_BITS=64
|
||||
endef
|
||||
|
||||
define cflags-nongnu
|
||||
-CFLAGS-tst-fortify-$(1)-nongnu-$(2).$(1) += -D_LARGEFILE64_SOURCE=1
|
||||
+CFLAGS-tst-fortify-$(1)-nongnu-$(2)-$(3).$(1) += -D_LARGEFILE64_SOURCE=1
|
||||
endef
|
||||
|
||||
src-chk-nongnu = \#undef _GNU_SOURCE
|
||||
@@ -145,12 +147,12 @@ src-chk-nongnu = \#undef _GNU_SOURCE
|
||||
# And they also generate warnings from warning attributes, which
|
||||
# cannot be disabled via pragmas, so require -Wno-error to be used.
|
||||
define gen-chk-test
|
||||
-tests-$(1)-chk += tst-fortify-$(1)-$(2)-$(3)
|
||||
-CFLAGS-tst-fortify-$(1)-$(2)-$(3).$(1) += -D_FORTIFY_SOURCE=$(3) -Wno-format \
|
||||
+tests-$(1)-$(4)-chk += tst-fortify-$(1)-$(2)-$(3)-$(4)
|
||||
+CFLAGS-tst-fortify-$(1)-$(2)-$(3)-$(4).$(1) += -D_FORTIFY_SOURCE=$(3) -Wno-format \
|
||||
-Wno-deprecated-declarations \
|
||||
-Wno-error
|
||||
-$(eval $(call cflags-$(2),$(1),$(3)))
|
||||
-$(objpfx)tst-fortify-$(1)-$(2)-$(3).$(1): tst-fortify.c Makefile
|
||||
+$(eval $(call cflags-$(2),$(1),$(3),$(4)))
|
||||
+$(objpfx)tst-fortify-$(1)-$(2)-$(3)-$(4).$(1): tst-fortify.c Makefile
|
||||
( echo "/* Autogenerated from Makefile. */"; \
|
||||
echo "$(src-chk-$(2))"; \
|
||||
echo "#include \"tst-fortify.c\"" ) > $$@.tmp
|
||||
@@ -159,19 +161,29 @@ endef
|
||||
|
||||
chk-extensions = c cc
|
||||
chk-types = default lfs nongnu
|
||||
+# 64 bit time_t implies LFS.
|
||||
+chk-types-time64 = default nongnu
|
||||
chk-levels = 1 2 3
|
||||
|
||||
$(foreach e,$(chk-extensions), \
|
||||
$(foreach t,$(chk-types), \
|
||||
$(foreach l,$(chk-levels), \
|
||||
- $(eval $(call gen-chk-test,$(e),$(t),$(l))))))
|
||||
+ $(eval $(call gen-chk-test,$(e),$(t),$(l),def)))))
|
||||
|
||||
-tests-all-chk += $(tests-c-chk) $(tests-cc-chk)
|
||||
+tests-all-chk += $(tests-c-def-chk) $(tests-cc-def-chk)
|
||||
+
|
||||
+$(foreach e,$(chk-extensions), \
|
||||
+ $(foreach t,$(chk-types-time64), \
|
||||
+ $(foreach l,$(chk-levels), \
|
||||
+ $(eval $(call gen-chk-test,$(e),$(t),$(l),time64)))))
|
||||
+
|
||||
+tests-all-time64-chk += $(tests-c-time64-chk) $(tests-cc-time64-chk)
|
||||
|
||||
define link-cc
|
||||
LDLIBS-$(1) = -lstdc++
|
||||
endef
|
||||
-$(foreach t,$(tests-cc-chk), $(eval $(call link-cc,$(t))))
|
||||
+$(foreach t,$(tests-cc-def-chk), $(eval $(call link-cc,$(t))))
|
||||
+$(foreach t,$(tests-cc-time64-chk), $(eval $(call link-cc,$(t))))
|
||||
|
||||
# backtrace_symbols only works if we link with -rdynamic. backtrace
|
||||
# requires unwind tables on most architectures.
|
||||
@@ -201,6 +213,10 @@ tests = backtrace-tst \
|
||||
tst-realpath-chk \
|
||||
$(tests-all-chk)
|
||||
|
||||
+tests-time64 += \
|
||||
+ $(tests-all-time64-chk) \
|
||||
+ # tests-time64
|
||||
+
|
||||
ifeq ($(have-ssp),yes)
|
||||
tests += tst-ssp-1
|
||||
endif
|
||||
@@ -210,7 +226,7 @@ tests += tst-read-chk-cancel
|
||||
endif
|
||||
|
||||
ifeq (,$(CXX))
|
||||
-tests-unsupported = $(tests-cc-chk)
|
||||
+tests-unsupported = $(tests-cc-def-chk) $(test-cc-time64-chk)
|
||||
endif
|
||||
|
||||
extra-libs = libpcprofile
|
||||
@@ -235,6 +251,7 @@ define chk-gen-locales
|
||||
$(objpfx)$(1).out: $(gen-locales)
|
||||
endef
|
||||
$(foreach t, $(tests-all-chk), $(eval $(call chk-gen-locales,$(t))))
|
||||
+$(foreach t, $(tests-all-time64-chk), $(eval $(call chk-gen-locales,$(t))))
|
||||
endif
|
||||
|
||||
sLIBdir := $(shell echo $(slibdir) | sed 's,lib\(\|64\)$$,\\\\$$LIB,')
|
||||
diff --git a/include/sys/poll.h b/include/sys/poll.h
|
||||
index f904e21f89..228704fe79 100644
|
||||
--- a/include/sys/poll.h
|
||||
+++ b/include/sys/poll.h
|
||||
@@ -2,13 +2,16 @@
|
||||
# include <io/sys/poll.h>
|
||||
|
||||
#ifndef _ISOMAC
|
||||
+#include <include/struct___timespec64.h>
|
||||
+
|
||||
extern int __poll (struct pollfd *__fds, unsigned long int __nfds,
|
||||
int __timeout);
|
||||
libc_hidden_proto (__poll)
|
||||
libc_hidden_proto (ppoll)
|
||||
|
||||
# if __TIMESIZE == 64
|
||||
-# define __ppoll64 __ppoll
|
||||
+# define __ppoll64 ppoll
|
||||
+# define __ppoll64_chk __ppoll_chk
|
||||
# else
|
||||
# include <time.h>
|
||||
# include <signal.h>
|
||||
diff --git a/io/bits/poll2.h b/io/bits/poll2.h
|
||||
index 3679d8451a..90f5574969 100644
|
||||
--- a/io/bits/poll2.h
|
||||
+++ b/io/bits/poll2.h
|
||||
@@ -43,6 +43,30 @@ poll (struct pollfd *__fds, nfds_t __nfds, int __timeout)
|
||||
|
||||
|
||||
#ifdef __USE_GNU
|
||||
+# ifdef __USE_TIME_BITS64
|
||||
+extern int __REDIRECT (__ppoll64_alias, (struct pollfd *__fds, nfds_t __nfds,
|
||||
+ const struct timespec *__timeout,
|
||||
+ const __sigset_t *__ss), __ppoll64);
|
||||
+extern int __ppoll64_chk (struct pollfd *__fds, nfds_t __nfds,
|
||||
+ const struct timespec *__timeout,
|
||||
+ const __sigset_t *__ss, __SIZE_TYPE__ __fdslen)
|
||||
+ __attr_access ((__write_only__, 1, 2));
|
||||
+extern int __REDIRECT (__ppoll64_chk_warn, (struct pollfd *__fds, nfds_t __n,
|
||||
+ const struct timespec *__timeout,
|
||||
+ const __sigset_t *__ss,
|
||||
+ __SIZE_TYPE__ __fdslen),
|
||||
+ __ppoll64_chk)
|
||||
+ __warnattr ("ppoll called with fds buffer too small file nfds entries");
|
||||
+
|
||||
+__fortify_function __fortified_attr_access (__write_only__, 1, 2) int
|
||||
+ppoll (struct pollfd *__fds, nfds_t __nfds, const struct timespec *__timeout,
|
||||
+ const __sigset_t *__ss)
|
||||
+{
|
||||
+ return __glibc_fortify (ppoll64, __nfds, sizeof (*__fds),
|
||||
+ __glibc_objsize (__fds),
|
||||
+ __fds, __nfds, __timeout, __ss);
|
||||
+}
|
||||
+# else
|
||||
extern int __REDIRECT (__ppoll_alias, (struct pollfd *__fds, nfds_t __nfds,
|
||||
const struct timespec *__timeout,
|
||||
const __sigset_t *__ss), ppoll);
|
||||
@@ -65,6 +89,7 @@ ppoll (struct pollfd *__fds, nfds_t __nfds, const struct timespec *__timeout,
|
||||
__glibc_objsize (__fds),
|
||||
__fds, __nfds, __timeout, __ss);
|
||||
}
|
||||
+# endif
|
||||
#endif
|
||||
|
||||
__END_DECLS
|
||||
diff --git a/sysdeps/unix/sysv/linux/Versions b/sysdeps/unix/sysv/linux/Versions
|
||||
index 65d2ceda2c..ca6eb1a49e 100644
|
||||
--- a/sysdeps/unix/sysv/linux/Versions
|
||||
+++ b/sysdeps/unix/sysv/linux/Versions
|
||||
@@ -313,6 +313,11 @@ libc {
|
||||
process_madvise;
|
||||
process_mrelease;
|
||||
}
|
||||
+ GLIBC_2.37 {
|
||||
+%ifdef TIME64_NON_DEFAULT
|
||||
+ __ppoll64_chk;
|
||||
+%endif
|
||||
+ }
|
||||
GLIBC_PRIVATE {
|
||||
# functions used in other libraries
|
||||
__syscall_rt_sigqueueinfo;
|
||||
diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
|
||||
index e0668a80cf..f28402fe03 100644
|
||||
--- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
|
||||
+++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
|
||||
@@ -513,6 +513,7 @@ GLIBC_2.36 pidfd_open F
|
||||
GLIBC_2.36 pidfd_send_signal F
|
||||
GLIBC_2.36 process_madvise F
|
||||
GLIBC_2.36 process_mrelease F
|
||||
+GLIBC_2.37 __ppoll64_chk F
|
||||
GLIBC_2.4 _Exit F
|
||||
GLIBC_2.4 _IO_2_1_stderr_ D 0xa0
|
||||
GLIBC_2.4 _IO_2_1_stdin_ D 0xa0
|
||||
diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
|
||||
index d28e7c60b7..e2f56880ed 100644
|
||||
--- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
|
||||
+++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
|
||||
@@ -510,6 +510,7 @@ GLIBC_2.36 pidfd_open F
|
||||
GLIBC_2.36 pidfd_send_signal F
|
||||
GLIBC_2.36 process_madvise F
|
||||
GLIBC_2.36 process_mrelease F
|
||||
+GLIBC_2.37 __ppoll64_chk F
|
||||
GLIBC_2.4 _Exit F
|
||||
GLIBC_2.4 _IO_2_1_stderr_ D 0xa0
|
||||
GLIBC_2.4 _IO_2_1_stdin_ D 0xa0
|
||||
diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
|
||||
index 922b05062f..319d92356e 100644
|
||||
--- a/sysdeps/unix/sysv/linux/csky/libc.abilist
|
||||
+++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
|
||||
@@ -2669,3 +2669,4 @@ GLIBC_2.36 pidfd_open F
|
||||
GLIBC_2.36 pidfd_send_signal F
|
||||
GLIBC_2.36 process_madvise F
|
||||
GLIBC_2.36 process_mrelease F
|
||||
+GLIBC_2.37 __ppoll64_chk F
|
||||
diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
|
||||
index 412144f94c..6450e17ebe 100644
|
||||
--- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
|
||||
+++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
|
||||
@@ -2618,6 +2618,7 @@ GLIBC_2.36 pidfd_open F
|
||||
GLIBC_2.36 pidfd_send_signal F
|
||||
GLIBC_2.36 process_madvise F
|
||||
GLIBC_2.36 process_mrelease F
|
||||
+GLIBC_2.37 __ppoll64_chk F
|
||||
GLIBC_2.4 __confstr_chk F
|
||||
GLIBC_2.4 __fgets_chk F
|
||||
GLIBC_2.4 __fgets_unlocked_chk F
|
||||
diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
|
||||
index 134393900a..0a24ec9afd 100644
|
||||
--- a/sysdeps/unix/sysv/linux/i386/libc.abilist
|
||||
+++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
|
||||
@@ -2802,6 +2802,7 @@ GLIBC_2.36 pidfd_open F
|
||||
GLIBC_2.36 pidfd_send_signal F
|
||||
GLIBC_2.36 process_madvise F
|
||||
GLIBC_2.36 process_mrelease F
|
||||
+GLIBC_2.37 __ppoll64_chk F
|
||||
GLIBC_2.4 __confstr_chk F
|
||||
GLIBC_2.4 __fgets_chk F
|
||||
GLIBC_2.4 __fgets_unlocked_chk F
|
||||
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
|
||||
index 0604029c68..16243a7a92 100644
|
||||
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
|
||||
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
|
||||
@@ -514,6 +514,7 @@ GLIBC_2.36 pidfd_open F
|
||||
GLIBC_2.36 pidfd_send_signal F
|
||||
GLIBC_2.36 process_madvise F
|
||||
GLIBC_2.36 process_mrelease F
|
||||
+GLIBC_2.37 __ppoll64_chk F
|
||||
GLIBC_2.4 _Exit F
|
||||
GLIBC_2.4 _IO_2_1_stderr_ D 0x98
|
||||
GLIBC_2.4 _IO_2_1_stdin_ D 0x98
|
||||
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
|
||||
index af2be5c80d..564a553b27 100644
|
||||
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
|
||||
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
|
||||
@@ -2745,6 +2745,7 @@ GLIBC_2.36 pidfd_open F
|
||||
GLIBC_2.36 pidfd_send_signal F
|
||||
GLIBC_2.36 process_madvise F
|
||||
GLIBC_2.36 process_mrelease F
|
||||
+GLIBC_2.37 __ppoll64_chk F
|
||||
GLIBC_2.4 __confstr_chk F
|
||||
GLIBC_2.4 __fgets_chk F
|
||||
GLIBC_2.4 __fgets_unlocked_chk F
|
||||
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
|
||||
index e090b8d48f..e850f47b21 100644
|
||||
--- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
|
||||
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
|
||||
@@ -2718,3 +2718,4 @@ GLIBC_2.36 pidfd_open F
|
||||
GLIBC_2.36 pidfd_send_signal F
|
||||
GLIBC_2.36 process_madvise F
|
||||
GLIBC_2.36 process_mrelease F
|
||||
+GLIBC_2.37 __ppoll64_chk F
|
||||
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
|
||||
index 8c5b2db243..37178c503f 100644
|
||||
--- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
|
||||
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
|
||||
@@ -2715,3 +2715,4 @@ GLIBC_2.36 pidfd_open F
|
||||
GLIBC_2.36 pidfd_send_signal F
|
||||
GLIBC_2.36 process_madvise F
|
||||
GLIBC_2.36 process_mrelease F
|
||||
+GLIBC_2.37 __ppoll64_chk F
|
||||
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
|
||||
index 68847134a2..3b30b31466 100644
|
||||
--- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
|
||||
+++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
|
||||
@@ -2710,6 +2710,7 @@ GLIBC_2.36 pidfd_open F
|
||||
GLIBC_2.36 pidfd_send_signal F
|
||||
GLIBC_2.36 process_madvise F
|
||||
GLIBC_2.36 process_mrelease F
|
||||
+GLIBC_2.37 __ppoll64_chk F
|
||||
GLIBC_2.4 __confstr_chk F
|
||||
GLIBC_2.4 __fgets_chk F
|
||||
GLIBC_2.4 __fgets_unlocked_chk F
|
||||
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
|
||||
index daa44e64fa..0e358570a2 100644
|
||||
--- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
|
||||
+++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
|
||||
@@ -2708,6 +2708,7 @@ GLIBC_2.36 pidfd_open F
|
||||
GLIBC_2.36 pidfd_send_signal F
|
||||
GLIBC_2.36 process_madvise F
|
||||
GLIBC_2.36 process_mrelease F
|
||||
+GLIBC_2.37 __ppoll64_chk F
|
||||
GLIBC_2.4 __confstr_chk F
|
||||
GLIBC_2.4 __fgets_chk F
|
||||
GLIBC_2.4 __fgets_unlocked_chk F
|
||||
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
|
||||
index 6169188c96..59c598b98f 100644
|
||||
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
|
||||
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
|
||||
@@ -2716,6 +2716,7 @@ GLIBC_2.36 pidfd_open F
|
||||
GLIBC_2.36 pidfd_send_signal F
|
||||
GLIBC_2.36 process_madvise F
|
||||
GLIBC_2.36 process_mrelease F
|
||||
+GLIBC_2.37 __ppoll64_chk F
|
||||
GLIBC_2.4 __confstr_chk F
|
||||
GLIBC_2.4 __fgets_chk F
|
||||
GLIBC_2.4 __fgets_unlocked_chk F
|
||||
diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
|
||||
index 58e9b486b0..463e01ab84 100644
|
||||
--- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
|
||||
+++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
|
||||
@@ -2757,3 +2757,4 @@ GLIBC_2.36 pidfd_open F
|
||||
GLIBC_2.36 pidfd_send_signal F
|
||||
GLIBC_2.36 process_madvise F
|
||||
GLIBC_2.36 process_mrelease F
|
||||
+GLIBC_2.37 __ppoll64_chk F
|
||||
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
|
||||
index 8c9ca32cbe..405d40d11c 100644
|
||||
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
|
||||
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
|
||||
@@ -2772,6 +2772,7 @@ GLIBC_2.36 pidfd_open F
|
||||
GLIBC_2.36 pidfd_send_signal F
|
||||
GLIBC_2.36 process_madvise F
|
||||
GLIBC_2.36 process_mrelease F
|
||||
+GLIBC_2.37 __ppoll64_chk F
|
||||
GLIBC_2.4 _IO_fprintf F
|
||||
GLIBC_2.4 _IO_printf F
|
||||
GLIBC_2.4 _IO_sprintf F
|
||||
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
|
||||
index 08a6604aab..ce89602b93 100644
|
||||
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
|
||||
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
|
||||
@@ -2805,6 +2805,7 @@ GLIBC_2.36 pidfd_open F
|
||||
GLIBC_2.36 pidfd_send_signal F
|
||||
GLIBC_2.36 process_madvise F
|
||||
GLIBC_2.36 process_mrelease F
|
||||
+GLIBC_2.37 __ppoll64_chk F
|
||||
GLIBC_2.4 _IO_fprintf F
|
||||
GLIBC_2.4 _IO_printf F
|
||||
GLIBC_2.4 _IO_sprintf F
|
||||
diff --git a/sysdeps/unix/sysv/linux/ppoll.c b/sysdeps/unix/sysv/linux/ppoll.c
|
||||
index 1105e29b00..2e173b931d 100644
|
||||
--- a/sysdeps/unix/sysv/linux/ppoll.c
|
||||
+++ b/sysdeps/unix/sysv/linux/ppoll.c
|
||||
@@ -67,7 +67,7 @@ __ppoll64 (struct pollfd *fds, nfds_t nfds, const struct __timespec64 *timeout,
|
||||
libc_hidden_def (__ppoll64)
|
||||
|
||||
int
|
||||
-__ppoll (struct pollfd *fds, nfds_t nfds, const struct timespec *timeout,
|
||||
+ppoll (struct pollfd *fds, nfds_t nfds, const struct timespec *timeout,
|
||||
const sigset_t *sigmask)
|
||||
{
|
||||
struct __timespec64 ts64;
|
||||
@@ -77,5 +77,4 @@ __ppoll (struct pollfd *fds, nfds_t nfds, const struct timespec *timeout,
|
||||
return __ppoll64 (fds, nfds, timeout ? &ts64 : NULL, sigmask);
|
||||
}
|
||||
#endif
|
||||
-strong_alias (__ppoll, ppoll)
|
||||
libc_hidden_def (ppoll)
|
||||
diff --git a/sysdeps/unix/sysv/linux/ppoll_chk.c b/sysdeps/unix/sysv/linux/ppoll_chk.c
|
||||
new file mode 100644
|
||||
index 0000000000..65c4b56671
|
||||
--- /dev/null
|
||||
+++ b/sysdeps/unix/sysv/linux/ppoll_chk.c
|
||||
@@ -0,0 +1,42 @@
|
||||
+/* Fortify ppoll implementation. Linux version.
|
||||
+ Copyright (C) 2022 Free Software Foundation, Inc.
|
||||
+ This file is part of the GNU C Library.
|
||||
+
|
||||
+ The GNU C 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.
|
||||
+
|
||||
+ The GNU C 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 the GNU C Library; if not, see
|
||||
+ <https://www.gnu.org/licenses/>. */
|
||||
+
|
||||
+#include <poll.h>
|
||||
+
|
||||
+int
|
||||
+__ppoll64_chk (struct pollfd *fds, nfds_t nfds,
|
||||
+ const struct __timespec64 *tmo, const __sigset_t *ss,
|
||||
+ __SIZE_TYPE__ fdslen)
|
||||
+{
|
||||
+ if (fdslen / sizeof (*fds) < nfds)
|
||||
+ __chk_fail ();
|
||||
+
|
||||
+ return __ppoll64 (fds, nfds, tmo, ss);
|
||||
+}
|
||||
+
|
||||
+#if __TIMESIZE != 64
|
||||
+int
|
||||
+__ppoll_chk (struct pollfd *fds, nfds_t nfds, const struct timespec *tmo,
|
||||
+ const __sigset_t *ss, __SIZE_TYPE__ fdslen)
|
||||
+{
|
||||
+ if (fdslen / sizeof (*fds) < nfds)
|
||||
+ __chk_fail ();
|
||||
+
|
||||
+ return ppoll (fds, nfds, tmo, ss);
|
||||
+}
|
||||
+#endif
|
||||
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
|
||||
index 009f22931e..5ca051a9eb 100644
|
||||
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
|
||||
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
|
||||
@@ -2770,6 +2770,7 @@ GLIBC_2.36 pidfd_open F
|
||||
GLIBC_2.36 pidfd_send_signal F
|
||||
GLIBC_2.36 process_madvise F
|
||||
GLIBC_2.36 process_mrelease F
|
||||
+GLIBC_2.37 __ppoll64_chk F
|
||||
GLIBC_2.4 _IO_fprintf F
|
||||
GLIBC_2.4 _IO_printf F
|
||||
GLIBC_2.4 _IO_sprintf F
|
||||
diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
|
||||
index afb5bc37b1..5b48168ec6 100644
|
||||
--- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
|
||||
+++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
|
||||
@@ -2625,6 +2625,7 @@ GLIBC_2.36 pidfd_open F
|
||||
GLIBC_2.36 pidfd_send_signal F
|
||||
GLIBC_2.36 process_madvise F
|
||||
GLIBC_2.36 process_mrelease F
|
||||
+GLIBC_2.37 __ppoll64_chk F
|
||||
GLIBC_2.4 __confstr_chk F
|
||||
GLIBC_2.4 __fgets_chk F
|
||||
GLIBC_2.4 __fgets_unlocked_chk F
|
||||
diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
|
||||
index 2b53a3cf92..c42b39cea8 100644
|
||||
--- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
|
||||
+++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
|
||||
@@ -2622,6 +2622,7 @@ GLIBC_2.36 pidfd_open F
|
||||
GLIBC_2.36 pidfd_send_signal F
|
||||
GLIBC_2.36 process_madvise F
|
||||
GLIBC_2.36 process_mrelease F
|
||||
+GLIBC_2.37 __ppoll64_chk F
|
||||
GLIBC_2.4 __confstr_chk F
|
||||
GLIBC_2.4 __fgets_chk F
|
||||
GLIBC_2.4 __fgets_unlocked_chk F
|
||||
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
|
||||
index 43b9844a99..5a0a662dee 100644
|
||||
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
|
||||
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
|
||||
@@ -2765,6 +2765,7 @@ GLIBC_2.36 pidfd_open F
|
||||
GLIBC_2.36 pidfd_send_signal F
|
||||
GLIBC_2.36 process_madvise F
|
||||
GLIBC_2.36 process_mrelease F
|
||||
+GLIBC_2.37 __ppoll64_chk F
|
||||
GLIBC_2.4 _IO_fprintf F
|
||||
GLIBC_2.4 _IO_printf F
|
||||
GLIBC_2.4 _IO_sprintf F
|
|
@ -54,6 +54,7 @@ SRC_URI = "${GLIBC_GIT_URI};branch=${SRCBRANCH};name=glibc \
|
|||
file://0023-fix-create-thread-failed-in-unprivileged-process-BZ-.patch \
|
||||
file://0024-Avoid-hardcoded-build-time-paths-in-the-output-binar.patch \
|
||||
file://0025-startup-Force-O2.patch \
|
||||
file://0001-Linux-Add-ppoll-fortify-symbol-for-64-bit-time_t-BZ-.patch \
|
||||
"
|
||||
S = "${WORKDIR}/git"
|
||||
B = "${WORKDIR}/build-${TARGET_SYS}"
|
||||
|
|
Loading…
Reference in New Issue
Block a user