]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Wrap the setdomainname syscall
authorMartin Cermak <mcermak@redhat.com>
Fri, 19 Sep 2025 07:31:39 +0000 (09:31 +0200)
committerMark Wielaard <mark@klomp.org>
Fri, 19 Sep 2025 16:37:18 +0000 (18:37 +0200)
The setdomainname() call sets the domain name to the value given in the
character array name.  The len argument specifies the number of bytes in
name.  (Thus, name does not require a terminating null byte.)

Declare a setdomainname wrapper in priv_syswrap-linux.h and hook it for
{amd64,arm,arm64,mips64,ppc32,ppc64,riscv64,s390x,x86}-linux using
LINX_ with PRE handler in syswrap-linux.c

https://bugs.kde.org/show_bug.cgi?id=369030

15 files changed:
NEWS
coregrind/m_syswrap/priv_syswrap-linux.h
coregrind/m_syswrap/syswrap-amd64-linux.c
coregrind/m_syswrap/syswrap-arm-linux.c
coregrind/m_syswrap/syswrap-arm64-linux.c
coregrind/m_syswrap/syswrap-linux.c
coregrind/m_syswrap/syswrap-mips32-linux.c
coregrind/m_syswrap/syswrap-mips64-linux.c
coregrind/m_syswrap/syswrap-nanomips-linux.c
coregrind/m_syswrap/syswrap-ppc32-linux.c
coregrind/m_syswrap/syswrap-ppc64-linux.c
coregrind/m_syswrap/syswrap-riscv64-linux.c
coregrind/m_syswrap/syswrap-s390x-linux.c
coregrind/m_syswrap/syswrap-x86-linux.c
include/vki/vki-scnums-riscv64-linux.h

diff --git a/NEWS b/NEWS
index f768e5ca5b8bab1865cf3393c30484962b557fd7..66a9f29a2284e850f8d078e6517d55cea788b1d9 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -69,6 +69,7 @@ are not entered into bugzilla tend to get forgotten about or ignored.
 
 309554  Wrap syscall remap_file_pages (216)
 338803  Handling of dwz debug alt files or cross-CU is broken
+369030  Wrap linux syscall: 171 (setdomainname)
 388526  Inconsistent severity in message text: "WARNING: Serious error"
 418756  MAP_FIXED_NOREPLACE mmap flag unsupported
 493430  Review all syscalls that use or return (new) file descriptors
index 49a4c222b5d27598ba2fe826d6cd27baa7b696e2..752bdf7370420d294cff0096dabfc13835f97ad5 100644 (file)
@@ -62,6 +62,7 @@ DECL_TEMPLATE(linux, sys_readahead);
 DECL_TEMPLATE(linux, sys_move_pages);
 DECL_TEMPLATE(linux, sys_cachestat);
 DECL_TEMPLATE(linux, sys_sysfs);
+DECL_TEMPLATE(linux, sys_setdomainname);
 
 // clone is similar enough between linux variants to have a generic
 // version, but which will call an extern defined in syswrap-<platform>-linux.c
index 88c84b84185962fc3d2eeee79df9a34f7811f77f..8b2c95037f21b520c3e97769466f21b35c406c79 100644 (file)
@@ -675,7 +675,7 @@ static SyscallTableEntry syscall_table[] = {
    //   (__NR_reboot,            sys_reboot),         // 169 
 
    GENX_(__NR_sethostname,       sys_sethostname),    // 170 
-   //   (__NR_setdomainname,     sys_setdomainname),  // 171 
+   LINX_(__NR_setdomainname,     sys_setdomainname),  // 171
    GENX_(__NR_iopl,              sys_iopl),           // 172 
    LINX_(__NR_ioperm,            sys_ioperm),         // 173 
    GENX_(__NR_create_module,     sys_ni_syscall),     // 174 
index 5567146eb359017110fd00e67dbbbc35b10a4083..e4f5e4c092e4659fbbce0dd5bcd6f90c2c8ccc6c 100644 (file)
@@ -694,7 +694,7 @@ static SyscallTableEntry syscall_main_table[] = {
    PLAX_(__NR_sigreturn,         sys_sigreturn),      // 119 ?/Linux
 
    LINX_(__NR_clone,             sys_clone),          // 120
-//zz    //   (__NR_setdomainname,     sys_setdomainname),  // 121 */*(?)
+   LINX_(__NR_setdomainname,     sys_setdomainname),  // 121
    GENXY(__NR_uname,             sys_newuname),       // 122
 //   PLAX_(__NR_modify_ldt,        sys_modify_ldt),     // 123
    LINXY(__NR_adjtimex,          sys_adjtimex),       // 124
index ada952cca6cc2df72ad3194389aa840d30527147..e1a8a883fc72fe5057fd1fce3bf7d3bb7bb020f6 100644 (file)
@@ -710,7 +710,7 @@ static SyscallTableEntry syscall_main_table[] = {
    GENX_(__NR_setgroups,         sys_setgroups),         // 159
    GENXY(__NR_uname,             sys_newuname),          // 160
    GENX_(__NR_sethostname,       sys_sethostname),       // 161
-   //   (__NR_setdomainname,     sys_ni_syscall),        // 162
+   LINX_(__NR_setdomainname,     sys_setdomainname),     // 162
    GENXY(__NR_getrlimit,         sys_old_getrlimit),     // 163
    GENX_(__NR_setrlimit,         sys_setrlimit),         // 164
    GENXY(__NR_getrusage,         sys_getrusage),         // 165
index 0d5aa7965d741adb7a46876e196dc5a4ee96ce46..54741769824715d09ae7ea9e45c1c36044f36cea 100644 (file)
@@ -1653,6 +1653,13 @@ POST(sys_sendfile64)
    }
 }
 
+PRE(sys_setdomainname)
+{
+   PRINT ("sys_setdomainname ( %#" FMT_REGWORD "x, %ld )", ARG1, SARG2);
+   PRE_REG_READ2 (long, "setdomainname", const void *, name, int, len);
+   PRE_MEM_READ("setdomainname(name)", ARG1, ARG2);
+}
+
 static void pre_read_timespec64 (ThreadId tid, const char *msg, UWord arg)
 {
    struct vki_timespec64 *ts64 = (void *)(Addr)arg;
index ba5a8bb1790692442968092552865dde004fdd4f..d1f5dfce368f0c79ec52016264793825155945af 100644 (file)
@@ -886,7 +886,7 @@ static SyscallTableEntry syscall_main_table[] = {
    GENX_ (__NR_fsync,                  sys_fsync),                   // 118
    PLAX_ (__NR_sigreturn,              sys_sigreturn),               // 119
    LINX_ (__NR_clone,                  sys_clone),                   // 120
-   //..    //   (__NR_setdomainname,     sys_setdomainname),     // 121
+   LINX_ (__NR_setdomainname,          sys_setdomainname),           // 121
    GENXY (__NR_uname,                  sys_newuname),                // 122
    //..    PLAX_(__NR_modify_ldt,        sys_modify_ldt),        // 123
    LINXY (__NR_adjtimex,               sys_adjtimex),                // 124
index 095be9b6ae35aafb856dc75265f410cfe17f7de7..64fb647b18f8d5dd4ad726ae90344c6ded0138f2 100644 (file)
@@ -217,7 +217,6 @@ SysRes sys_set_tls ( ThreadId tid, Addr tlsptr )
 DECL_TEMPLATE (mips_linux, sys_set_thread_area);
 DECL_TEMPLATE (mips_linux, sys_swapon);
 DECL_TEMPLATE (mips_linux, sys_swapoff);
-DECL_TEMPLATE (mips_linux, sys_setdomainname);
 DECL_TEMPLATE (mips_linux, sys_sethostname);
 DECL_TEMPLATE (mips_linux, sys_reboot);
 DECL_TEMPLATE (mips_linux, sys_cacheflush);
@@ -273,12 +272,6 @@ PRE(sys_reboot)
    *flags |= SfMayBlock;
 }
 
-PRE(sys_setdomainname)
-{
-   PRINT ("sys_setdomainname ( %#" FMT_REGWORD "x, %ld )", ARG1, SARG2);
-   PRE_REG_READ2 (long, "setdomainname", const void *, name, int, len);
-}
-
 PRE(sys_sethostname)
 {
    PRINT ("sys_sethostname ( %#" FMT_REGWORD "x, %ld )", ARG1, SARG2);
@@ -658,7 +651,7 @@ static SyscallTableEntry syscall_main_table[] = {
    PLAX_ (__NR_swapoff, sys_swapoff),
    PLAX_ (__NR_reboot, sys_reboot),
    PLAX_ (__NR_sethostname, sys_sethostname),
-   PLAX_ (__NR_setdomainname, sys_setdomainname),
+   LINX_ (__NR_setdomainname, sys_setdomainname),
    GENX_ (__NR_create_module, sys_ni_syscall),
    LINX_ (__NR_init_module, sys_init_module),
    LINX_ (__NR_delete_module, sys_delete_module),
index 592d93d8f39b7875ac86e4d6895cf6ecac4718aa..94e4ce4d43545732f49055238f0edc4f0f179ef3 100644 (file)
@@ -382,7 +382,6 @@ DECL_TEMPLATE (mips_linux, sys_set_thread_area);
 DECL_TEMPLATE (mips_linux, sys_ptrace);
 DECL_TEMPLATE (mips_linux, sys_unshare);
 DECL_TEMPLATE (mips_linux, sys_reboot);
-DECL_TEMPLATE (mips_linux, sys_setdomainname);
 DECL_TEMPLATE (mips_linux, sys_sethostname);
 DECL_TEMPLATE (mips_linux, sys_swapon);
 DECL_TEMPLATE (mips_linux, sys_swapoff);
@@ -514,12 +513,6 @@ PRE(sys_reboot)
    *flags |= SfMayBlock;
 }
 
-PRE(sys_setdomainname)
-{
-   PRINT ("sys_setdomainname ( %#lx, %ld )", ARG1, SARG2);
-   PRE_REG_READ2 (long, "setdomainname", const void *, name, int, len);
-}
-
 PRE(sys_sethostname)
 {
    PRINT ("sys_sethostname ( %#lx, %ld )", ARG1, SARG2);
@@ -712,7 +705,7 @@ static SyscallTableEntry syscall_main_table[] = {
    GENX_ (__NR_setgroups,              sys_setgroups),
    GENXY (__NR_uname,                  sys_newuname),
    PLAX_ (__NR_sethostname,            sys_sethostname),
-   PLAX_ (__NR_setdomainname,          sys_setdomainname),
+   LINX_ (__NR_setdomainname,          sys_setdomainname),
    GENXY (__NR_getrusage,              sys_getrusage),
    GENX_ (__NR_umask,                  sys_umask),
    LINXY (__NR_prctl,                  sys_prctl),
index a0e11d5ed6eea8ccf7ae5379f5f22cafaa299654..94010bcee1dc995e0bf762769cdb6e63c65a3601 100644 (file)
@@ -757,7 +757,7 @@ static SyscallTableEntry syscall_table[] = {
    PLAX_(__NR_sigreturn,         sys_sigreturn),         // 119 ?/Linux
 //.. 
    LINX_(__NR_clone,             sys_clone),             // 120
-//..    //   (__NR_setdomainname,     sys_setdomainname),     // 121 */*(?)
+   LINX_(__NR_setdomainname,     sys_setdomainname),     // 121
    GENXY(__NR_uname,             sys_newuname),          // 122
 //..    PLAX_(__NR_modify_ldt,        sys_modify_ldt),        // 123
    LINXY(__NR_adjtimex,          sys_adjtimex),          // 124
index 974a4995fdfd8e0d08ed1e9411aa1e6a1baa8912..da81c0757eba33bb33f3b6fa05011c99c8cbaf1c 100644 (file)
@@ -745,7 +745,7 @@ static SyscallTableEntry syscall_table[] = {
 // _____(__NR_sigreturn,         sys_sigreturn),          // 119
 
    LINX_(__NR_clone,             sys_clone),              // 120
-// _____(__NR_setdomainname,     sys_setdomainname),      // 121
+   LINX_(__NR_setdomainname,     sys_setdomainname),      // 121
    GENXY(__NR_uname,             sys_newuname),           // 122
 // _____(__NR_modify_ldt,        sys_modify_ldt),         // 123
    LINXY(__NR_adjtimex,          sys_adjtimex),           // 124
index 5134bd17134c3ca2f15e3ee2aeff3c26f9aff223..dc175e3ecac0187d716f3b2a735b072276c6e244 100644 (file)
@@ -468,6 +468,7 @@ static SyscallTableEntry syscall_main_table[] = {
    GENX_(__NR_setgroups, sys_setgroups),                           /* 159 */
    GENXY(__NR_uname, sys_newuname),                                /* 160 */
    GENX_(__NR_sethostname, sys_sethostname),                       /* 161 */
+   LINX_(__NR_setdomainname, sys_setdomainname),                   /* 162 */
    GENXY(__NR_getrlimit, sys_getrlimit),                           /* 163 */
    GENX_(__NR_setrlimit, sys_setrlimit),                           /* 164 */
    GENXY(__NR_getrusage, sys_getrusage),                           /* 165 */
index 8f7159751aafc8eda10628dd7a6ff86d626840ee..fba3d96fb5c8123c475e0e2afe344b3a5b60d2ad 100644 (file)
@@ -556,7 +556,7 @@ static SyscallTableEntry syscall_table[] = {
    PLAX_(__NR_sigreturn, sys_sigreturn),                              // 119
 
    LINX_(__NR_clone,  sys_clone),                                     // 120
-// ?????(__NR_setdomainname, ),                                       // 121
+   LINX_(__NR_setdomainname, sys_setdomainname),                      // 121
    GENXY(__NR_uname, sys_newuname),                                   // 122
    GENX_(123, sys_ni_syscall), /* unimplemented (by the kernel) */    // 123
 // ?????(__NR_adjtimex, ),                                            // 124
index f129317a82e40279d7725584ea3c1709c0b38392..7d2d495a906799ed0071759d6aca0ce30a711bbe 100644 (file)
@@ -1302,7 +1302,7 @@ static SyscallTableEntry syscall_table[] = {
    PLAX_(__NR_sigreturn,         sys_sigreturn),      // 119 ?/Linux
 
    LINX_(__NR_clone,             sys_clone),          // 120
-//zz    //   (__NR_setdomainname,     sys_setdomainname),  // 121 */*(?)
+   LINX_(__NR_setdomainname,     sys_setdomainname),  // 121
    GENXY(__NR_uname,             sys_newuname),       // 122
    PLAX_(__NR_modify_ldt,        sys_modify_ldt),     // 123
    LINXY(__NR_adjtimex,          sys_adjtimex),       // 124
index f30636f417439c624621657a73d7dbab1a174c75..6130ce37f1e84888f075ad8d35713e69fbfc10ee 100644 (file)
 #define __NR_setgroups 159
 #define __NR_uname 160
 #define __NR_sethostname 161
+#define __NR_setdomainname 162
 #define __NR_getrlimit 163
 #define __NR_setrlimit 164
 #define __NR_getrusage 165