Re-visiting SKIP_TEST_BOGUS_ADDR in tests/ipc_msg.c

Dmitry V. Levin ldv at altlinux.org
Sat Sep 12 11:19:00 UTC 2020


On Fri, Sep 11, 2020 at 06:10:35PM +0800, Ruinland ChuanTzu Tsai wrote:
> Hi all,
> 
> In glibc's 2.32 implementation, the syscall wrapper code now will ac-
> cess the `buf` for transforming data types into kernel desired ones :
> 
> https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/msgctl.c;h=0776472d5e01dea3d4a90e5f025f5074e10d0250;hb=HEAD
> 
> which is introduced in the commit 3283f711 :
> https://sourceware.org/git/?p=glibc.git;a=commit;f=sysdeps/unix/sysv/linux/msgctl.c;h=3283f711132eaadc4f04bd8c1d84c910c29ba066
> 
> This will definitely triggers the segmentation fault in user space
> first instead of triggering EFAULT inside Linux kernel on _every_
> platform.

Apparently, the conversion happens only on those architectures where
glibc supports 32-bit time_t, that is, where __TIMESIZE == 32.

On these architectures disabling of TEST_MSGCTL_BOGUS_ADDR cures the
segfault, but sadly it isn't enough to fix the test because glibc
performs the time_t conversion and passes a structure at a different
address in memory to the system call.


-- 
ldv


More information about the Strace-devel mailing list