mirror of
https://sourceware.org/git/glibc.git
synced 2024-12-12 06:10:10 +00:00
489d0b8b32
The timestamps created by __convert_scm_timestamps only make sense for
64 bit time_t programs, 32 bit time_t programs will ignore 64 bit time_t
timestamps since SO_TIMESTAMP will be defined to old values (either by
glibc or kernel headers).
Worse, if the buffer is not suffice MSG_CTRUNC is set to indicate it
(which breaks some programs [1]).
This patch makes only 64 bit time_t recvmsg and recvmmsg to call
__convert_scm_timestamps. Also, the assumption to called it is changed
from __ASSUME_TIME64_SYSCALLS to __TIMESIZE != 64 since the setsockopt
might be called by libraries built without __TIME_BITS=64. The
MSG_CTRUNC is only set for the 64 bit symbols, it should happen only
if 64 bit time_t programs run older kernels.
Checked on x86_64-linux-gnu and i686-linux-gnu.
[1] https://github.com/systemd/systemd/pull/20567
Reviewed-by: Florian Weimer <fweimer@redhat.com>
(cherry picked from commit
|
||
---|---|---|
.. | ||
auxv.h | ||
bitypes.h | ||
cdefs.h | ||
dir.h | ||
epoll.h | ||
errno.h | ||
fcntl.h | ||
file.h | ||
gmon_out.h | ||
gmon.h | ||
ioctl.h | ||
ipc.h | ||
mman.h | ||
msg.h | ||
param.h | ||
poll.h | ||
prctl.h | ||
profil.h | ||
queue.h | ||
random.h | ||
resource.h | ||
select.h | ||
sem.h | ||
sendfile.h | ||
shm.h | ||
signal.h | ||
single_threaded.h | ||
socket.h | ||
stat.h | ||
statfs.h | ||
statvfs.h | ||
sysinfo.h | ||
syslog.h | ||
sysmacros.h | ||
termios.h | ||
time.h | ||
timeb.h | ||
times.h | ||
ttychars.h | ||
types.h | ||
uio.h | ||
un.h | ||
unistd.h | ||
utsname.h | ||
vfs.h | ||
vlimit.h | ||
wait.h | ||
xattr.h |