fortify-headers: fix inconsistent time_t version of ppoll

Bug:
fortify/poll.h includes poll.h, which redirects ppoll to __ppoll_time64
if the _REDIR_TIME64 macro is 1. Then fortify/poll.h will #undef ppoll
and use the 32 bit version.

Fix: we should not do this when _REDIR_TIME64 is 1.

[1] https://forum.openwrt.org/t/idle-cpu-usage-of-usbmuxd/140331/15
[2] https://github.com/openwrt/openwrt/issues/12574

Signed-off-by: Georgi Valkov <gvalkov@gmail.com>
This commit is contained in:
Georgi Valkov 2023-05-10 03:02:29 +03:00 committed by Hauke Mehrtens
parent 8d2ab0fac6
commit ddfe5678a4
2 changed files with 12 additions and 1 deletions

View File

@ -9,7 +9,7 @@ include $(INCLUDE_DIR)/target.mk
PKG_NAME:=fortify-headers
PKG_VERSION:=1.1
PKG_RELEASE=1
PKG_RELEASE=2
PKG_SOURCE_URL:=https://dl.2f30.org/releases
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz

View File

@ -0,0 +1,11 @@
--- a/include/poll.h
+++ b/include/poll.h
@@ -39,7 +39,7 @@ _FORTIFY_FN(poll) int poll(struct pollfd
return __orig_poll(__f, __n, __s);
}
-#ifdef _GNU_SOURCE
+#if defined(_GNU_SOURCE) && !_REDIR_TIME64
#undef ppoll
_FORTIFY_FN(ppoll) int ppoll(struct pollfd *__f, nfds_t __n, const struct timespec *__s,
const sigset_t *__m)